【问题标题】:How do I specify “Run with highest privileges” in VBScript?如何在 VBScript 中指定“以最高权限运行”?
【发布时间】:2013-11-29 08:31:59
【问题描述】:

当我使用 GUI 任务计划程序时,我可以轻松地选中“以最高权限运行”复选框。

然而,我在 VBScript 命令行中也没有发现这样的选项。

有没有办法通过 VBScript 做到这一点?

如何在这个脚本中添加这两个功能?

VBScript 示例:http://msdn.microsoft.com/en-us/library/aa383665%28v%3DVS.85%29.aspx

权限:http://msdn.microsoft.com/en-us/library/windows/desktop/aa382076%28v=vs.85%29.aspx

【问题讨论】:

    标签: vbscript scheduled-tasks task


    【解决方案1】:

    如果您询问如何在管理员模式下以交互方式运行 VBScript,您只需从已在“管理员模式”下运行的命令行运行 CSCRIPT。例如,单击开始,键入 cmd,等待几秒钟...,右键单击 cmd.exe 并选择“以管理员身份运行”。然后,当您从该命令行运行 CSCRIPT 时,它将已经以最高权限运行。请注意,您必须已经使用管理员用户帐户登录。

    或者您是在问如何使用这些选项集在 VBScript 中自动创建新的计划任务?

    【讨论】:

    • 是的! THIS => 或者您是在问如何使用这些选项集在 VBScript 中自动创建新的计划任务?
    【解决方案2】:

    此 VBScript 代码可自动执行 SchTasks.exe 程序,并且应该演示您想要做什么。要获取使用 SchTasks 创建任务的开关列表,您可以运行以下命令:

    schtasks.exe /create /?
    

    您仍然必须从管理命令提示符运行以下脚本才能创建具有“最高”权限的任务。此外,如果您希望使用系统帐户以外的帐户,则应使用 /RP 开关。如果您要使其完全自动化,您可能还希望使用 /F 开关来强制覆盖现有任务。否则它可能会在等待用户输入时挂起。

    Option Explicit
    
    Dim WshShell, strWinDir, strCmdLine, lngExitCode
    Const OpenAsCurrentWindowIsOpened = 10, WaitForExit = True
    
    Set WshShell = CreateObject("WScript.Shell")
    strWinDir = WshShell.ExpandEnvironmentStrings("%WINDIR%")
    
    strCmdLine = strWinDir & "\System32\SCHTASKS.exe /create /SC DAILY /TN ""My VBScript Task"" /TR """ & strWinDir & "\System32\calc.exe"" /RL HIGHEST /RU ""NT AUTHORITY\SYSTEM"""
    
    lngExitCode = WshShell.Run(strCmdLine, OpenAsCurrentWindowIsOpened, WaitForExit)
    
    If lngExitCode = 0 Then
      WScript.Echo "Success"
    Else
      WScript.Echo "Failed with error code " & CStr(lngExitCode)
    End If
    

    【讨论】:

    • 工作 XP/Vista/Windows 7 吗? (x86/x64 两者)
    • 你为什么不试试呢?我希望这适用于 Vista 和 Windows 7。由于 XP 不存在“最高权限”的概念,您可能需要进行调整。
    【解决方案3】:

    如果您指的是管理员模式,请尝试以下操作:

    Dim ObjShell
    Set ObjShell = CreateObject("WScript.Shell")
    ObjShell.Run "runas.exe"
    

    由于CMD in Admin mode 只是runas.exe,您可以通过WScript.Shell(ObjShell.Run) 运行它。 这种方式更有效,因为如果你想运行命令行,你可以简单地这样做:

    ObjShell.Run "runas.exe /K (command goes here)"
    

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2011-04-17
      • 2013-03-04
      • 1970-01-01
      • 2015-01-14
      • 2011-09-01
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多