函數(shù)CreateProcessAsUser用于在指定的用戶會(huì)話中啟動(dòng)新進(jìn)程。以下是使用CreateProcessAsUser函數(shù)的步驟:
確保你已經(jīng)獲得了要啟動(dòng)進(jìn)程的用戶會(huì)話的訪問權(quán)限。你可以使用函數(shù)WTSQueryUserToken獲取用戶會(huì)話的訪問令牌。
使用函數(shù)CreateProcessAsUser創(chuàng)建新進(jìn)程。傳遞的參數(shù)包括:
用戶會(huì)話的訪問令牌。
要執(zhí)行的可執(zhí)行文件的路徑。
命令行參數(shù)(如果有)。
進(jìn)程的安全描述符。
進(jìn)程的啟動(dòng)信息。
例如:
// 獲取用戶會(huì)話的訪問令牌
HANDLE hToken;
WTSQueryUserToken(sessionId, &hToken);
// 創(chuàng)建新進(jìn)程
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcessAsUser(hToken, "C:\\Path\\To\\Executable.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
CloseHandle(hToken);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
請(qǐng)注意,使用CreateProcessAsUser函數(shù)需要管理員權(quán)限,并且只能在交互式會(huì)話中運(yùn)行。