应用程序如何以管理员权限运行

*个人博客开张,以后每周将分享自己一些项目经验和整合的工具*

起因

最近在做一个项目,项目中用到了JNA(java调用C++ dll动态库),在开发测试阶段中测试运行均没问题,在客户电脑上运行显示结果正常,实际程序没有运行成功,花了一个晚上的时间最后发现程序以管理员权限运行才能正常运行成功,然后上网找了些资料,原来是微软引入了UAC机制

开发环境及程序简述

本文不涉及具体项目内容,往后将分享一些项目技术点

开发环境

  1. Java开发环境:eclipse+JDK8+JNA
  2. C++开发环境:VS2013(V120)
  3. 操作系统:Win10 64位

程序功能

程序(后面简称为A)能够正常操作运行需要调用并运行某款软件(后面简称为B),简单来说B程序有个登录界面,A程序中操作调用B登陆界面自动完成输入并登录,A界面使用JAVA开发的,自动登录过程采用C++编写,两者间通过JNA调用DLL动态库实现

参考资料连接

  1. MSDN:http://msdn.microsoft.com/en-us/library/bb756929.aspx
  2. 感谢博主技术分享:https://www.cnblogs.com/chechen/p/5592924.html

解决方案

方案一

以管理员权限运行

 操作方法: 引用软件右键—>以管理员方式运行
 利弊: 操作简单,但每次都要右键操作,用户体验差,直接双击才是用户正常操作习惯

在这里插入图片描述

方案二

修改应用软件兼容性

 操作方法: 引用软件右键—>兼容性—>勾选以管理员身份运行
 利弊: 设置完之后每次运行软件都会以管理员身份运行,但把该软件拷贝到其他电脑后又要重新设置

[](https://i.imgur.com/GfWKWce.gif)

方案三

VS2013编译项目时设置UAC

  操作方法: 项目右键—>属性—>配置属性—>连接器—>清单文件—>UAC执行级别(选择 requireAdministrator)—>重新编译
  利弊: 编译完之后,应用图标便多了一个盾牌,应用软件每次运行便会弹框提示是否以管理员权限运行

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

总结

当应用程序需要实现修改系统注册表、获取其他应用窗口句柄并完成控制操作等功能时,需要以管理员权限才能正常运行实现对应功能,方案2+方案3一起使用效果是最理想的

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 操作系统中,可以使用以下方法以管理员权限运行 Qt 程序: 1. 手动以管理员身份运行 Qt 应用程序 可以通过右键单击 Qt 应用程序的可执行文件或快捷方式,然后选择“以管理员身份运行”来手动以管理员身份运行 Qt 应用程序。 2. 使用 Qt Creator 设置管理员权限 在 Qt Creator 中,可以通过在项目的“构建和运行”设置中选择“以管理员身份运行”选项来设置 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 程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值