我在 Windows XP 计算机上的本地系统帐户下运行了一个进程。然后,此进程尝试以系统上的另一个用户(例如 Max)的身份使用其默认应用程序打开文件。Max 已登录并拥有一个桌面。
使用 vbscript 中的 ShellExecute 以下命令打开该文件:
runas /user:Max "cmd.exe /C start \"path_to_file\""
在上述本地系统帐户下运行的进程执行完成后,系统会提示 Max 输入密码。(因此,runas 组件至少已启动。)
只是,即使输入了正确的密码,runas 也会产生以下错误:
RUNAS ERROR: Unable to run - cmd.exe /C start "path_to_file"
5: Access is denied.
我不清楚拒绝访问的是什么。以 Max 身份运行 cmd.exe /C start "path_to_file" 完全没问题。因此 Max 显然有权访问 "path_to_file"。
答案1
这看起来是一样的PSExec 遇到的问题。编辑:Runas 和 PSExec 通过调用 CreateProcessWithLogonW 生成具有不同凭据的新进程。但是,如果您使用的是“LocalSystem”帐户:
您无法从在“LocalSystem”帐户下运行的进程调用 CreateProcessWithLogonW,因为该函数使用调用者令牌中的登录 SID,而“LocalSystem”帐户的令牌不包含此 SID。
http://msdn.microsoft.com/en-us/library/ms682431%28VS.85%29.aspx
答案2
当我尝试使用自动输入密码的 sanur 工具时,我也遇到了类似的情况。只要我使用我的帐户,我的脚本就可以正常工作。当我在与系统帐户配合使用的 SCCM 中运行它时,它失败了。
我找不到解决方法,我的结论是您无法使用系统帐户启动 runas。