91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Win8 CreateProcessAsUser管理員權限問題

小云
279
2023-08-07 13:50:37
欄目: 編程語言

在Windows 8中,要使用CreateProcessAsUser函數以管理員身份運行進程,需要執行以下步驟:

  1. 獲取管理員訪問令牌:使用OpenProcessToken函數打開當前進程的訪問令牌。

  2. 創建新的訪問令牌:使用DuplicateTokenEx函數復制管理員訪問令牌,并設置訪問權限為TOKEN_ALL_ACCESS。

  3. 獲取管理員用戶的會話ID:使用WTSGetActiveConsoleSessionId函數獲取當前活動的控制臺會話ID。

  4. 獲取與控制臺會話關聯的用戶令牌:使用WTSQueryUserToken函數獲取與指定會話ID關聯的用戶令牌。

  5. 使用CreateProcessAsUser函數以管理員身份運行進程:將步驟2中創建的管理員訪問令牌和步驟4中獲取的用戶令牌傳遞給CreateProcessAsUser函數。

以下是一個使用CreateProcessAsUser函數以管理員身份運行進程的示例代碼:

#include <Windows.h>
#include <Userenv.h>
#include <Wtsapi32.h>
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函數將失敗。

0
沁水县| 长丰县| 布拖县| 安义县| 连江县| 天长市| 临汾市| 兰坪| 桃江县| 乐平市| 兴安盟| 天峻县| 湘潭县| 西城区| 凭祥市| 贵南县| 余江县| 临澧县| 宁强县| 巴马| 锡林浩特市| 恩平市| 麻江县| 澎湖县| 孙吴县| 龙南县| 柘荣县| 武汉市| 阜南县| 长春市| 商洛市| 得荣县| 达州市| 错那县| 保山市| 桐城市| 灵石县| 洪雅县| 北安市| 西吉县| 奉化市|