6

我正在使用 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);
}

仍在等待更好的解决方案。

4

1 回答 1

2

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

创建和嵌入应用程序清单 (UAC)

如何:在 C/C++ 应用程序中嵌入清单

清单文件示例

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

如何仅使用 mingw 工具将清单嵌入到 dll 中

希望有帮助。

于 2012-11-26T16:40:50.317 回答