在开发过程中,经常会遇到调用外部程序的需求,可往往外部程序需要管理员权限才可以运行,否则即使成功调用外部程序,执行命令也会失败。现在来分享一下我的解决思路:
1. QProcess (不行)
编写的Qt程序,在Pro文件中增加了
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" (msvc版本)
这条语句仅仅将编写的程序增加了管理员权限,但在此程序中调用的外部程序,依旧没有管理员权限
2. ShellExecuteEx(可行)
包含的头文件
#include <Windows.h>
#include <shellapi.h>
包含的静态库
shell32.lib
例子 注册Redis服务
char szPath[256] = {0};
strcpy(szPath, strCurrentPath.toStdString().c_str());
SHELLEXECUTEINFOA shellInfo;
memset(&shellInfo, 0, sizeof(shellInfo));
shellInfo.cbSize = sizeof(SHELLEXECUTE