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