![如何以管理员身份在本地网络上运行批处理文件?(Vista)](https://linux22.com/image/485437/%E5%A6%82%E4%BD%95%E4%BB%A5%E7%AE%A1%E7%90%86%E5%91%98%E8%BA%AB%E4%BB%BD%E5%9C%A8%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%8A%E8%BF%90%E8%A1%8C%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%EF%BC%9F%EF%BC%88Vista%EF%BC%89.png)
我有几个批处理文件必须以管理员身份运行。如果它们在我的计算机上,我可以这样做,但是当我将它们放在网络上,然后尝试以管理员身份运行它们时,命令提示符只是不显示任何输出并完成,显然没有执行任何代码。当我正常运行网络批处理文件时,我至少会收到一堆错误消息,告诉我访问被拒绝。
有什么想法可以解决此问题吗?
我通过快捷方式执行这些批处理文件,快捷方式不使用 UNC 路径。我还将快捷方式配置为以管理员身份运行。
答案1
每个用户会话都存在网络驱动器映射,因此当您的快捷方式在管理员的安全上下文中运行时,不存在驱动器映射。
尝试通过 UNC 调用快捷方式中的批处理脚本,而不是引用驱动器号。
答案2
我猜驱动器被映射了?快捷方式本身不保存凭据,这不属于它们的功能。如果您的网络位于域中,那么您可以使快捷方式使用 runas /noprofile /user:Administrator {Shortcut} 每次都会提示您输入密码,但会确保它以管理员身份运行。
另一个选项是使用 psexec \{computer} -s -c {batch file},它将把批处理文件复制到远程计算机,并以系统帐户身份执行它。您必须在远程计算机上拥有管理权限才能使用 psexec,或者您可以指定拥有该权限的用户/密码。
更多信息:runas:http://technet.microsoft.com/en-us/library/bb490994.aspx psexec:http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
答案3
serverfault 上的 Cooper 回答了我的问题:
网络驱动器映射是按会话保存的,因此当您的快捷方式在管理员的安全上下文中运行时,不存在驱动器映射(除非管理员有当前会话,通过另一个运行方式,或通过当前远程桌面会话)。
尝试通过 UNC 调用快捷方式中的批处理脚本,而不是引用驱动器号。
答案4
您还可以尝试创建批处理文件的快捷方式,然后勾选快捷方式的“以管理员身份运行”选项(属性-高级),然后运行它们(如果可能的话)。这有效,但我建议改用“runas”...