[英]VBScript - Restart another user's explorer.exe
我正在写一个小的 VBScript,它在一周中的特定日期禁用 Windows XP 开始菜单中的关闭选项,然后在第二天重新启用它。
该脚本旨在在有限权限的用户登录上运行。 由于此用户无权更改 Windows 注册表,因此必须由管理员帐户运行。
我设置了一个计划任务,该任务在受限用户登录时从管理员帐户运行脚本,如此处所述,第 5 点。
问题是:对 Windows 注册表应用更改后,我必须重新启动该用户的 explorer.exe 才能使更改生效。 我的脚本无法做到这一点。 它可以杀死 explorer.exe 但由于某种原因无法重新启动它。
请注意,如果我直接从管理员帐户运行脚本,更改管理员帐户的注册表设置并重新启动管理员帐户 explorer.exe,则脚本可以完美运行。
这是代码的一部分:
Option Explicit
Const RegKey = "HKEY_USERS\LIMITED USER SID HERE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoClose"
Const BackupDay = 5 'sunday = 1
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
If Weekday(Date) = BackupDay Then
If WshShell.RegRead(RegKey) = 0 Then
WshShell.Run "msg * __Message Here__"
Wscript.Sleep 500
WshShell.RegWrite RegKey, 1, "REG_DWORD"
RestartExplorer1
' RestartExplorer2
WScript.quit
Else
[...]
Sub RestartExplorer1()
Dim strComputer, strProcessToKill, objWMIService, colProcess, objProcess
strComputer = "."
strProcessToKill = "explorer.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer _
& "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcessToKill & "'")
For Each objProcess in colProcess
objProcess.Terminate()
Next
End Sub
程序 RestartExplorer1 应该杀死所有 explorer.exe 进程(包括管理员的进程,没关系,因为他应该被注销所以不应该有一个,除了我可以按用户名过滤并只杀死用户的进程,但这不是问题)但是如果从管理员帐户的计划任务运行,则绝对不会执行任何操作。
RestartExplorer2 没有更好的运气:
Sub RestartExplorer2()
WshShell.Run "cmd /c Taskkill /F /IM explorer.exe"
WScript.Sleep 500
WshShell.Run "cmd /c Start explorer.exe"
End Sub
在这种情况下 explorer.exe 确实被杀死了,但由于某种原因它没有重新启动。
我到处搜索,没有结果。
非常感谢任何帮助,谢谢。
您可以使用 Windows 中的 RunAs 功能在另一个用户帐户下重新启动 Explorer.exe 进程。 尝试这个:
Dim objShell, strUsername, strPassword
strUsername = "username"
strPassword = "password"
Set objShell= WScript.CreateObject("WScript.Shell")
objShell.Run "runas /user:" & strusername & " ""explorer.exe"""
WScript.Sleep 100
objShell.Sendkeys strPassword & "~"
WScript.Quit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.