【WinForm】怎样以管理员身份运行安装程序

当开发的程序需要安装时,有时默认安装会遇到访问被拒绝的问题。为了解决这个问题,需要以管理员身份运行程序。

应用程序

打开项目属性,找到应用程序下的清单, 设置好如下图
在这里插入图片描述

UAC清单

再找到项目的Properties一项,点击展开,如下图
在这里插入图片描述

会看到里面的一个文件app.manifest,双击打开这个文件,打开如下

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
       如果想要更改 Windows 用户帐户控制级别,请使用
       以下节点之一替换 requestedExecutionLevel 节点。n
  <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
  <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

      指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
      如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
      元素。
  -->
  <requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>

有的文件会自动加上注释, 是否感到贴心呢,
按照提示把asInvoker改成requireAdministrator保存即可

再重新编译运行看, 弹出提示要求提升的权限, 如下图, 选择重新启动即可
在这里插入图片描述

管理员身份

这下项目编译出来的程序, 程序图标右下角会多出一个盾牌小图标🛡

这个程序就会自动以管理员身份运行了, 安装程序正常运行

如果不想每次都重启, 只要记得,在打开VS开发工具前,以管理员身份运行开发工具

安全调试

如果弹出以下提醒, 说明项目属性有设置了安全调试选项,
在这里插入图片描述

打开项目属性, 点中那个安全性项,

ClickOne

在里面有个设置,启用ClickOne 安全设置勾选给取消,再试试重新编译就好了,

这安全调试选项与管理员权限提权无关,不要被其他文章误导勾选

在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在 Windows 操作系统中,可以使用以下方法以管理员权限运行 Qt 程序: 1. 手动以管理员身份运行 Qt 应用程序 可以通过右键单击 Qt 应用程序的可执行文件或快捷方式,然后选择&ldquo;以管理员身份运行&rdquo;来手动以管理员身份运行 Qt 应用程序。 2. 使用 Qt Creator 设置管理员权限 在 Qt Creator 中,可以通过在项目的&ldquo;构建和运行&rdquo;设置中选择&ldquo;以管理员身份运行&rdquo;选项来设置 Qt 应用程序以管理员权限运行。 3. 使用 C++ 代码设置管理员权限 可以在 C++ 代码中使用 Windows API 函数来设置 Qt 应用程序以管理员权限运行。例如,可以使用以下代码来获取当前进程的句柄并以管理员权限运行: ``` #include <Windows.h> int main(int argc, char *argv[]) { // 获取当前进程句柄 HANDLE hProcess = GetCurrentProcess(); // 以管理员权限运行 if (!OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken)) { // 处理错误 return 1; } TOKEN_PRIVILEGES tp; ZeroMemory(&tp, sizeof(tp)); tp.PrivilegeCount = 1; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid)) { // 处理错误 return 1; } if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL)) { // 处理错误 return 1; } // 运行 Qt 应用程序 QApplication a(argc, argv); // ... return a.exec(); } ``` 以上是一些常用的方法,你可以根据具体情况选择合适的方法来以管理员权限运行 Qt 程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA远方

谢谢!收到你的爱╮(╯▽╰)╭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值