运行 调用 bat 文件并等待完成的 cmd.exe
Run a cmd.exe which calls a bat file and wait to finish
我需要能够 运行 cmd.exe 以特殊权限 运行 一个 bat 文件并等待它完成。
我已经设法以特权打开 cmd.exe,但我找不到等到 bat 文件完成的时间。
我不能使用 WScript.Shell
,因为 cmd.exe
是使用 cimv2 以特殊权限打开的。
Dim WMIObj, strHost, intProcessID
On Error Resume Next
strHost = "."
Set WMIObj = GetObject("winmgmts:\" & strHost & "\root\cimv2:Win32_Process")
If IsObject(WMIObj) Then
WMIObj.Security_.Privileges.AddAsString "SeRestorePrivilege", True
WMIObj.Create "cmd.exe /c cd /d c:\temp && asd.cmd && pause", Null, Null, intProcessID
End If
Set WMIObj = Nothing
添加一个循环等待PID为intProcessID
的进程消失:
Set wmi = GetObject("winmgmts://./root/cimv2")
Do
WScript.Sleep 100
Set p = wmi.ExecQuery("SELECT * FROM W32_Process WHERE ProcessID=" & intProcessID)
Until p.Count = 0
我需要能够 运行 cmd.exe 以特殊权限 运行 一个 bat 文件并等待它完成。
我已经设法以特权打开 cmd.exe,但我找不到等到 bat 文件完成的时间。
我不能使用 WScript.Shell
,因为 cmd.exe
是使用 cimv2 以特殊权限打开的。
Dim WMIObj, strHost, intProcessID
On Error Resume Next
strHost = "."
Set WMIObj = GetObject("winmgmts:\" & strHost & "\root\cimv2:Win32_Process")
If IsObject(WMIObj) Then
WMIObj.Security_.Privileges.AddAsString "SeRestorePrivilege", True
WMIObj.Create "cmd.exe /c cd /d c:\temp && asd.cmd && pause", Null, Null, intProcessID
End If
Set WMIObj = Nothing
添加一个循环等待PID为intProcessID
的进程消失:
Set wmi = GetObject("winmgmts://./root/cimv2")
Do
WScript.Sleep 100
Set p = wmi.ExecQuery("SELECT * FROM W32_Process WHERE ProcessID=" & intProcessID)
Until p.Count = 0