MFC中CreateProcess使用管理员权限怎么设置,继承句柄什么意思,请用C++代码详细写出
时间: 2024-03-19 21:45:52 浏览: 11
要以管理员权限运行CreateProcess,需要在启动进程的时候设置一些参数。具体来说,需要设置lpProcessAttributes参数的bInheritHandle成员为TRUE,以便让新进程继承当前进程的权限和句柄。
下面是一个使用管理员权限运行CreateProcess的示例代码:
```
#include <windows.h>
#include <tchar.h>
int _tmain(int argc, _TCHAR* argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// 设置lpProcessAttributes参数的bInheritHandle成员为TRUE
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
// 创建进程
if (!CreateProcess(NULL, _T("cmd.exe"), &sa, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
{
_tprintf(_T("Error: CreateProcess failed (%d).\n"), GetLastError());
return 1;
}
// 等待进程结束
WaitForSingleObject(pi.hProcess, INFINITE);
// 关闭句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
在这个示例代码中,我们通过设置SECURITY_ATTRIBUTES结构体的bInheritHandle成员为TRUE,让新进程继承当前进程的权限和句柄。然后调用CreateProcess函数启动cmd.exe进程,并等待进程结束。最后关闭进程句柄和线程句柄。