如何在 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?
如何在 RSACryptoServiceProvider .NET 类中指定公钥