标题: [问题求助] 【已解决】-求助VBS代码为何有的窗口能用代码关闭,有的不能? [打印本页]
作者: liupeiji03 时间: 2024-9-9 00:30 标题: 【已解决】-求助VBS代码为何有的窗口能用代码关闭,有的不能?
本帖最后由 liupeiji03 于 2024-9-10 16:30 编辑
- Set oShell = CreateObject("WScript.Shell")
- If oShell.AppActivate("Untitled - Notepad") Then
- WScript.Sleep 500
- oShell.SendKeys "%{F4}"
- End If
复制代码
以上是本人网上搜索得来的代码,根据测试,有的窗口能关闭,有的不能。比如窗口标题设置为本地连接,打开本地连接的状态窗口时可以用该代码关闭,
而打开本地连接的属性窗口时却无法用该代码关闭。
不知道这是什么原因?还是窗口也有很多种属性?
另外这段代码如何修改可以让它一直在后台运行,检测到对应的窗口标题就关闭?
作者: czjt1234 时间: 2024-9-9 05:58
只对当前活动窗口有效,其它应用程序可能会抢占活动窗口
作者: Batcher 时间: 2024-9-9 09:06
回复 1# liupeiji03
如果需要上传文件,请用使用网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: liupeiji03 时间: 2024-9-9 09:24
回复 2# czjt1234
应该不是吧,运行这个代码后它就会把含这个标题的窗口放到最前了。我测试了一下,打开一个窗口后再在这个软件菜单操作打开的窗口就关不了了。
作者: liupeiji03 时间: 2024-9-9 09:38
回复 3# Batcher
如图,打开本地连接状态后,在任务栏可以看到有一个本地连接状态的窗口。在本地连接状态窗口点击属性打开本地连接属性的窗口,可以看到任务栏还是只有一个本地连接状态的窗口。第一个能用代码关闭,第二个就不能了。
作者: flashercs 时间: 2024-9-9 10:48
- ' 脚本必须以管理员身份运行
- Set oShell = CreateObject("WScript.Shell")
- Do
- If oShell.AppActivate("本地连接 ",True) Then ' 窗口标题 前缀
- ' WScript.Echo "Closing window:" & Timer
- WScript.Sleep 500
- oShell.SendKeys "%{F4}"
- WScript.Sleep 1000 ' 避免重复关闭窗口
- End If
- WScript.Sleep 1000 ' 延迟,避免CPU占用过高
- Loop
复制代码
两个窗口都能关闭
作者: liupeiji03 时间: 2024-9-9 14:01
回复 6# flashercs
测试过了还是不能关闭本地连接的属性窗口。
作者: flashercs 时间: 2024-9-9 15:25
回复 7# liupeiji03
必须以管理员身份运行vbs,win7,win10,wi11我都测试通过,完美.
作者: liupeiji03 时间: 2024-9-9 17:38
回复 8# flashercs
你好,我在win7下以administrator账户测试成功了,但在其他账户下我还没找到方法怎样以管理员身份运行vbs文件。还有个问题就是我想以这段代码关闭“本地连接 属性”窗口,我将标题改为了“本地连接 属性”,但是无法关闭窗口。不知道是否是本地连接与属性之间填的空格问题导致不匹配
作者: flashercs 时间: 2024-9-9 20:11
回复 9# liupeiji03
目的是 不让用户修改 本地连接 属性吗?用关闭窗口的方式不适用,即使创建计划任务以Administrators用户执行也不能关闭 其他用户的窗口.
最好的方式是通过权限设置 禁止任何人读取 netshell.dll,这样本地连接 属性就 任何人无法访问了.
作者: liupeiji03 时间: 2024-9-9 20:18
回复 10# flashercs
是的,主要是针对有管理员权限的域用户,禁止其修改IP。你说的这个netshell.dll我还没试过,我先测试一下。
作者: liupeiji03 时间: 2024-9-9 21:12
回复 10# flashercs
经过测试,修改netshell.dll文件为只有读取权限,会导致本地连接打叉,本地连接的状态窗口也打不开,跟禁用服务network connections的效果差不多,不推荐这样子搞。
但是经过你的提示,我发现修改netcfgx.dll文件为只有读取权限,就可以达到用户无法打开属性窗口的效果,如图:
现在的问题就是如何通过域策略来控制修改该文件的权限?否则在每台机这样设置也不现实。
作者: flashercs 时间: 2024-9-9 21:37
回复 12# liupeiji03
组策略 开机/关机脚本
作者: liupeiji03 时间: 2024-9-9 22:04
回复 13# flashercs
脚本我不会写,大佬可否赐教?首先要获取该文件的所有权,然后再将文件的administrators组修改为只读权限。
作者: flashercs 时间: 2024-9-9 23:29
回复 14# liupeiji03 - @echo off
- takeown /f %windir%\system32\netcfgx.dll
- icacls %windir%\system32\netcfgx.dll /deny Everyone:R
- icacls %windir%\system32\netcfgx.dll /setowner "NT SERVICE\TrustedInstaller"
复制代码
作者: liupeiji03 时间: 2024-9-9 23:36
回复 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
用以上代码可以实现对文件权限的修改,但是运行这个脚本时会弹出用户账户控制的对话框,这个有办法让他不弹出来直接默认运行吗?
作者: flashercs 时间: 2024-9-10 00:05
本帖最后由 flashercs 于 2024-9-10 00:06 编辑
回复 16# liupeiji03
你把UAC 彻底关闭就好了.
组策略 开机脚本是以 system用户运行的,没有UAC提示.
作者: liupeiji03 时间: 2024-9-10 16:25
回复 17# flashercs
感谢大神的指导!至此,这个问题已经算解决了。最终方案是以域控策略下发登录脚本来修改netcfgx.dll文件的权限来达到禁止用户访问本地连接属性的窗口。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |