有没有办法启动Windows安装程序并避免使用UAC弹出窗口



我需要从我的C#应用程序中运行 *.msi文件。安装在没有UI的情况下运行,并且必须无人看管。有没有办法避免使用UAC弹出窗口?

过去,我创建了解决类似:

的解决方案

1)安装列表应用程序和作为系统运行的Windows服务。

2)应用程序检查新版本的Web服务并下载到临时目录。

3)应用程序通知服务,MSI存在于临时目录中。

4)通过执行msiexec/jm foo.msi/qn(已发布/分配)

来服务"祝福" MSI

5)服务通知应用程序现在信任MSI。

6)应用程序在没有UAC提示的情况下执行MSI的安装。msiexec/i foo.msi/qn restartapp = 1

此模式要求MSI在自定义操作计划/安全沙箱方面完全合规。还建议应用程序启动MSI后立即退出,以避免使用RestartApp的自定义操作,以重新启动应用程序,以赋予其无缝的用户体验。

我已经考虑过将此作为foss项目/模式,但是确保其滥用的安全考虑因素超出了我想要处理的范围。

某个地方必须有一个高程提示,但是您可以将UAC提示推迟到C#启动器。它启动,获得UAC高程,如果您启动MSI安装,则以createProcess()启动(或仅致电MSIInstallProduct)启动MSI也将被提升。

最新更新