c++多进程如何让待运行的exe是以管理员运行
时间: 2024-03-16 17:43:13 浏览: 93
在 C++ 中,可以通过以下步骤将待运行的 exe 以管理员权限运行:
1. 获取当前进程的句柄和自身的完整路径。
```cpp
HANDLE hProcess = GetCurrentProcess();
wchar_t path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
```
2. 通过 ShellExecuteEx 函数启动一个新进程,并将参数中的 lpVerb 字段设置为 "runas",这样新进程将以管理员权限运行。
```cpp
SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };
sei.lpVerb = L"runas";
sei.lpFile = path;
sei.nShow = SW_NORMAL;
ShellExecuteEx(&sei);
```
完整的代码示例:
```cpp
#include <Windows.h>
#include <Shellapi.h>
int main() {
// Get current process handle and path
HANDLE hProcess = GetCurrentProcess();
wchar_t path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
// Start a new process with elevated privileges
SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };
sei.lpVerb = L"runas";
sei.lpFile = path;
sei.nShow = SW_NORMAL;
ShellExecuteEx(&sei);
return 0;
}
```
需要注意的是,如果待运行的 exe 是需要管理员权限才能运行的,那么在用户运行程序时会弹出 UAC 确认对话框,用户需要确认授权才能以管理员权限运行。
阅读全文