[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 【已解决】-求助VBS代码为何有的窗口能用代码关闭,有的不能?

本帖最后由 liupeiji03 于 2024-9-10 16:30 编辑
  1. Set oShell = CreateObject("WScript.Shell")
  2. If oShell.AppActivate("Untitled - Notepad") Then
  3.    WScript.Sleep 500
  4.    oShell.SendKeys "%{F4}"
  5. End If
复制代码
以上是本人网上搜索得来的代码,根据测试,有的窗口能关闭,有的不能。比如窗口标题设置为本地连接,打开本地连接的状态窗口时可以用该代码关闭,

而打开本地连接的属性窗口时却无法用该代码关闭。

不知道这是什么原因?还是窗口也有很多种属性?
另外这段代码如何修改可以让它一直在后台运行,检测到对应的窗口标题就关闭?

回复 2# czjt1234


    应该不是吧,运行这个代码后它就会把含这个标题的窗口放到最前了。我测试了一下,打开一个窗口后再在这个软件菜单操作打开的窗口就关不了了。

TOP

回复 3# Batcher


    如图,打开本地连接状态后,在任务栏可以看到有一个本地连接状态的窗口。在本地连接状态窗口点击属性打开本地连接属性的窗口,可以看到任务栏还是只有一个本地连接状态的窗口。第一个能用代码关闭,第二个就不能了。

TOP

回复 6# flashercs


    测试过了还是不能关闭本地连接的属性窗口。

TOP

回复 8# flashercs


    你好,我在win7下以administrator账户测试成功了,但在其他账户下我还没找到方法怎样以管理员身份运行vbs文件。还有个问题就是我想以这段代码关闭“本地连接 属性”窗口,我将标题改为了“本地连接 属性”,但是无法关闭窗口。不知道是否是本地连接与属性之间填的空格问题导致不匹配

TOP

回复 10# flashercs


    是的,主要是针对有管理员权限的域用户,禁止其修改IP。你说的这个netshell.dll我还没试过,我先测试一下。

TOP

回复 10# flashercs


    经过测试,修改netshell.dll文件为只有读取权限,会导致本地连接打叉,本地连接的状态窗口也打不开,跟禁用服务network connections的效果差不多,不推荐这样子搞。
但是经过你的提示,我发现修改netcfgx.dll文件为只有读取权限,就可以达到用户无法打开属性窗口的效果,如图:


现在的问题就是如何通过域策略来控制修改该文件的权限?否则在每台机这样设置也不现实。

TOP

回复 13# flashercs


    脚本我不会写,大佬可否赐教?首先要获取该文件的所有权,然后再将文件的administrators组修改为只读权限。

TOP

回复 13# flashercs


   @echo offcd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
takeown /f %SystemRoot%\System32\netcfgx.dll
icacls %SystemRoot%\System32\netcfgx.dll /remove:g Users
icacls %SystemRoot%\System32\netcfgx.dll /grant:r Administrators:r

用以上代码可以实现对文件权限的修改,但是运行这个脚本时会弹出用户账户控制的对话框,这个有办法让他不弹出来直接默认运行吗?

TOP

回复 17# flashercs


    感谢大神的指导!至此,这个问题已经算解决了。最终方案是以域控策略下发登录脚本来修改netcfgx.dll文件的权限来达到禁止用户访问本地连接属性的窗口。

TOP

返回列表