VBScript 被执行了两次
VBScript gets executed twice
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
End if
WSHShell.Run "Reg.exe add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f"
WSHShell.Run "calc" ,,true 'true wartet, bis das Programm beendet wurde. Zwischen den Kommas kann man noch angeben, wie das Fenster aussehen soll
WSHShell.Run "userinit.exe"
WSHShell.Run "Reg.exe add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 0 /f"
如果我执行此脚本,它会打开 calc 两次而不是一次,但其他一切正常。 3 小时以来我一直在搜索错误,但我找不到它。大家都知道解决办法吗?
正如您的代码所做的那样
....
if arguments = 0 then
run myself as admin
end if
....
run calc
....
并且没有什么能阻止到达 run calc
行,从第一个脚本实例和以管理员身份启动的实例执行计算。
如果end if
后面的代码只能以管理员身份执行,那么,在以管理员身份启动脚本后添加一个WScript.Quit
,
If WScript.Arguments.length = 0 Then
....
ObjShell.ShellExecute ....
WScript.Quit
End If
或将代码更改为if / then / else / end if
结构
If WScript.Arguments.length = 0 Then
....
ObjShell.ShellExecute ....
Else
WShShell.Run ....
....
End If
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
End if
WSHShell.Run "Reg.exe add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f"
WSHShell.Run "calc" ,,true 'true wartet, bis das Programm beendet wurde. Zwischen den Kommas kann man noch angeben, wie das Fenster aussehen soll
WSHShell.Run "userinit.exe"
WSHShell.Run "Reg.exe add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 0 /f"
如果我执行此脚本,它会打开 calc 两次而不是一次,但其他一切正常。 3 小时以来我一直在搜索错误,但我找不到它。大家都知道解决办法吗?
正如您的代码所做的那样
....
if arguments = 0 then
run myself as admin
end if
....
run calc
....
并且没有什么能阻止到达 run calc
行,从第一个脚本实例和以管理员身份启动的实例执行计算。
如果end if
后面的代码只能以管理员身份执行,那么,在以管理员身份启动脚本后添加一个WScript.Quit
,
If WScript.Arguments.length = 0 Then
....
ObjShell.ShellExecute ....
WScript.Quit
End If
或将代码更改为if / then / else / end if
结构
If WScript.Arguments.length = 0 Then
....
ObjShell.ShellExecute ....
Else
WShShell.Run ....
....
End If