发布C#应用时如何让Visual Studio 2022生成的安装包自动请求管理员权限
Visual Studio 2022 生成的安装包自动请求管理员权限方案
以下方案仅会让安装包触发UAC提权,不会影响主程序运行权限,符合你不需要用户每次启动应用都申请管理员权限的需求。
方案1:项目内置配置(适用于ClickOnce发布场景)
- 打开你的C#项目属性页,切换到安全性选项卡
- 勾选「启用ClickOnce安全设置」,选择「这是完全可信的应用程序」
- 切换到发布选项卡,点击「必备组件」按钮,确认WebView2 Runtime已被勾选为安装必备项
- 右键点击项目名称,选择「卸载项目」,再次右键点击项目选择「编辑项目文件」
- 在项目文件中找到ClickOnce相关配置段,添加如下配置:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
- 保存文件后重新加载项目,重新发布即可,生成的安装包启动时会自动触发提权请求。
方案2:通用配置(适用于所有类型的安装包生成场景)
不管你用ClickOnce还是Visual Studio Installer Projects生成安装包,都可以通过注入manifest的方式实现自动提权:
- 新建一个名为
setup.manifest的纯文本文件,写入以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
- 打开「Visual Studio 2022 开发者命令提示符」,cd到你生成的
setup.exe所在目录 - 执行以下命令完成manifest注入:
mt.exe -manifest setup.manifest -outputresource:setup.exe;#1 - 处理完成后的
setup.exe启动时就会自动请求管理员权限,WebView2的安装流程可以正常完成。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

