我正在寻找以提升模式(runas 管理员)运行批处理文件,以便它不会触发 UAC 提示用户交互。我们在登录脚本中进行了一些注册表编辑,这些脚本会触发 UAC 提示运行的每个注册表。
我意识到这种违背了 UAC 的目的,但是如果有某种方法可以在启用了 UAC 的机器上运行批处理文件,那就太好了。
这些批处理文件需要能够在没有任何用户交互的情况下运行(它们主要是登录脚本和一些管理脚本)。我们没有使用 Active Directory 域,因此希望有一个针对无 AD 域的解决方案。
到目前为止,我找到的解决方案如下:
3.
使用“runas”命令运行批处理文件。
我在想但我还没有真正研究过的另一件事是,powershell 脚本在启用 UAC 的环境中运行/工作得更好吗? Windows 是否“信任”经过认证的 powershell 脚本并允许它们在不触发 UAC 的情况下不受阻碍地运行?
从我读到的内容来看,除了禁用 UAC 之外,这些都无法绕过 UAC。但我只是想看看是否有人能够对这个话题有更多的了解。
谢谢,
干杯
最佳答案
当前用户有权访问的注册表操作本身不会触发 UAC 提示。
但是,如果以未提升的管理员身份运行,则使用具有需要提升的 list 的应用程序会提示。
您是否尝试使用 regedit.exe
执行批处理操作?如果是这样,请替换为 reg.exe
(使用 cmd.exe
)或者更好的是 PowerShell 的内置注册表支持。
例如。
get-itemproperties 'HKLM:\SOFTWARE\Classes\Folder'
不需要提升(因为每个人都可以读取该 key ),但是在该 key 上设置属性将需要提升 PSH session 。
另一种方法,如果您正在执行需要管理访问权限的操作(需要修改对某些对象的访问权限,ACL 将修改限制为管理员)。或者,在没有输入管理员帐户凭据的情况下,非管理员永远无法执行 UAC 或不执行某些操作。
考虑使用任务计划程序:触发用户登录但在特定提升的管理员帐户下配置。
总结:确实需要至少详细了解您正在做的一件会触发 UAC 的事情。
关于windows - 批处理脚本、Powershell 和不触发 Windows 中的 UAC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6176664/