如何在 VBScript 中指定“以最高权限运行”?

Posted

技术标签:

【中文标题】如何在 VBScript 中指定“以最高权限运行”?【英文标题】:How do I specify “Run with highest privileges” in 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

【问题讨论】:

【参考方案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)"

【讨论】:

以上是关于如何在 VBScript 中指定“以最高权限运行”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CodeNameOne 项目中指定 abiFilters?

如何在类型提示中指定函数类型?

如何在 HTML 的图例中指定不同的形状?

如何在 RSACryptoServiceProvider .NET 类中指定公钥

如何在 HibernateJpaAutoConfiguration 中指定 packagesToScan?

Postgres:如何在where语句中指定参数[重复]