我正在尝试使用Powershell使用以下代码安装EXE:Start-Process -FilePath "C:\Windows\Temp\Installer.exe" -Verb runas
我正在弹出用户帐户控件,其中显示“您是否要允许以下程序对此计算机进行更改?”我宁愿不禁用UAC。是否有任何方法以编程方式向UAC提示“是”或绕过它?
您正在使用runas,因此强制提示提供凭据以便继续。
Sooo,那就是,或者你是说,无论脚本在哪里运行,用户都已经以管理员身份登录了?如果是这样的话,为什么要提升呢?
因此,最终做Backin指出:
# Check UACState
(Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).EnableLUA
尽管MS和许多其他人都不推荐禁用UAC,但我们知道无论如何都会有人知道,无论出于什么原因,他们都可以证明这一点。
资源:
elevate without prompt - verb runas start-process
https://superuser.com/questions/195689/how-to-start-process-without-uac
https://gallery.technet.microsoft.com/scriptcenter/How-to-easily-run-an-0c0eb47a
直接回答你的问题:
是否有任何方法以编程方式向UAC提示“是”或绕过它?
...没有。”原因是这将是一个巨大的安全漏洞。想象一下,如果这是可能的:所有恶意软件必须做的就是使用这种旁路技术。
UAC专门用于阻止您做您要求的事情。虽然可以禁用UAC,但绝对不建议使用。
Aaron Margosis(微软)写了一篇关于此事的博客文章:
FAQ: Why can't I bypass the UAC prompt?
该博客的一句话:
如果可以将应用程序标记为以静默提升的权限运行,那么所有那些具有LUA [受限用户访问]错误的应用程序会变成什么样?答:他们都被标记为默默地提升。未来的Windows软件将如何编写?答:默默地提升。实际上没有人会修复他们的应用程序,并且最终用户应用程序将继续需要并且不必要地使用完全管理权限运行。