云服务器免费试用

Win8 CreateProcessAsUser管理员权限问题

服务器知识 0 306

在Windows 8中,要使用CreateProcessAsUser函数以管理员身份运行进程,需要执行以下步骤:
1. 获取管理员访问令牌:使用OpenProcessToken函数打开当前进程的访问令牌。
2. 创建新的访问令牌:使用DuplicateTokenEx函数复制管理员访问令牌,并设置访问权限为TOKEN_ALL_ACCESS。
3. 获取管理员用户的会话ID:使用WTSGetActiveConsoleSessionId函数获取当前活动的控制台会话ID。
4. 获取与控制台会话关联的用户令牌:使用WTSQueryUserToken函数获取与指定会话ID关联的用户令牌。
5. 使用CreateProcessAsUser函数以管理员身份运行进程:将步骤2中创建的管理员访问令牌和步骤4中获取的用户令牌传递给CreateProcessAsUser函数。
以下是一个使用CreateProcessAsUser函数以管理员身份运行进程的示例代码:
```cpp
#include
#include
#include
BOOL CreateProcessAsAdmin(LPCWSTR wszPath)
{
HANDLE hToken;
HANDLE hDupToken;
DWORD dwSessionId;
HANDLE hUserToken;
PROCESS_INFORMATION pi;
STARTUPINFO si;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &hToken))
{
return FALSE;
}
if (!DuplicateTokenEx(hToken, TOKEN_ALL_ACCESS, NULL, SecurityIdentification, TokenPrimary, &hDupToken))
{
CloseHandle(hToken);
return FALSE;
}
if (!ProcessIdToSessionId(GetCurrentProcessId(), &dwSessionId))
{
CloseHandle(hToken);
CloseHandle(hDupToken);
return FALSE;
}
if (!WTSQueryUserToken(dwSessionId, &hUserToken))
{
CloseHandle(hToken);
CloseHandle(hDupToken);
return FALSE;
}
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = L"winsta0\\default";
BOOL bResult = CreateProcessAsUserW(hDupToken, NULL, wszPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
CloseHandle(hToken);
CloseHandle(hDupToken);
CloseHandle(hUserToken);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return bResult;
}
int wmain(int argc, wchar_t* argv[])
{
LPCWSTR wszPath = L"C:\\Path\\To\\Your\\Executable.exe";
if (CreateProcessAsAdmin(wszPath))
{
wprintf(L"Process started successfully!\n");
}
else
{
wprintf(L"Failed to start process!\n");
}
return 0;
}
```
请注意,为了编译此示例代码,需要链接Userenv.lib和Wtsapi32.lib库文件。另外,需要在程序中使用管理员权限运行,否则OpenProcessToken函数将失败。

Win8 CreateProcessAsUser管理员权限问题

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Win8 CreateProcessAsUser管理员权限问题
本文地址: https://solustack.com/52192.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。