我在尝试运行 VBscript 时遇到了问题。我正在使用 Windows 8.1 update 1 Enterprise,连接到 Enterprise 域,并使用域帐户登录。此域帐户已添加到管理员组。
我的 VBscript 必须在 Program Files (x86) 目录中创建一个文件夹和一个日志文件。如果我使用本地管理员帐户双击运行此 VBscript,它会完美运行。但如果我尝试使用我的域帐户运行相同的 VBscript,我会得到错误消息访问被拒绝。
一种解决方案是完全停用 UAC(将 enableLUA 注册表值设置为 1),但此方法会阻止 Modern UI 应用程序,而我们需要保持这些应用程序的执行。
是否可以在任何管理员帐户上授予对 VBScripts 执行的完全控制权,就像在本地管理员内置帐户下一样?我还没有找到这个问题的任何解决方案,我无法相信没有解决方案,特别是在企业中。
答案1
我通常这样做的方法是将以下代码粘贴到脚本的顶部:
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, WScript.ScriptFullName & " /elevate", "", "runas", 1
WScript.Quit
End If
这样,如果我以非管理员身份启动 VBS - 它会尝试运行,注意到我不是管理员,然后重新启动 - 提示我以管理员身份运行,然后我们就可以开始了。
我知道这很痛苦,但这是一个相当简单的解决方案。
希望这可以帮助
答案2
如果您使用命令行,此技巧很有用:
- 转到
System32
(或Syswow4
对于 x64) - 复制
cscript.exe
并wscript.exe
命名它们csadmin.exe
并wsadmin.exe
- 打开其属性,设置“以管理员身份运行”标志。
现在,如果您想以管理员身份运行脚本,请使用以下命令之一:
csadmin myscript.vbs
wsadmin myscript.vbs
(如果您想以默认方式运行,请使用wscript
和cscript
)
笔记:如果您想以管理员身份运行所有脚本(每次都会出现 UAC 窗口),那么只需将“以管理员身份运行”标志设置为开启cscript.exe
即可wscript.exe
。
希望能帮助到你。