加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Qt(在Windows上)将权限级别设置为“requireAdministrator”

发布时间:2020-12-14 02:49:45 所属栏目:Windows 来源:网络整理
导读:我正在使用Qt Creator并努力使.exe文件默认以管理员身份运行. 通过在线阅读所有解决方案,我试着将这一行放在我的.pro文件中: QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator' uiAccess='false'" 但是当我检查我的.exe(使用记事本)时,它包含:
我正在使用Qt Creator并努力使.exe文件默认以管理员身份运行.

通过在线阅读所有解决方案,我试着将这一行放在我的.pro文件中:

QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator' uiAccess='false'"

但是当我检查我的.exe(使用记事本)时,它包含:

<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>

有人能告诉我,如何添加requireAdministrator?

临时解决方案:
直到现在我找不到解决方案所以我做了一个临时的黑客攻击.我做了一个.exe调用
‘LaunchAnother.exe’将使用以下代码启动我的’main.exe’:

SHELLEXECUTEINFO shExInfo = {0};
shExInfo.cbSize = sizeof(shExInfo);
shExInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shExInfo.hwnd = 0;
shExInfo.lpVerb = _T("runas");                // Operation to perform
shExInfo.lpFile = _T("main.exe");       // Application to start    
shExInfo.lpParameters = "";                  // Additional parameters
shExInfo.lpDirectory = 0;
shExInfo.nShow = SW_SHOW;
shExInfo.hInstApp = 0;  

if (ShellExecuteEx(&shExInfo))
{
    WaitForSingleObject(shExInfo.hProcess,INFINITE);
    CloseHandle(shExInfo.hProcess);
}

还在等待更好的解决方案.

解决方法

您可以使用mt.exe在编译后嵌入清单文件.

Create and Embed an Application Manifest (UAC)

How to: Embed a Manifest Inside a C/C++ Application

An example manifest file

另一种选择是创建一个.res文件并将其指向您的清单文件,如下所示:

How to embed a manifest into a dll with mingw tools only

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读