函數CreateProcessAsUser用于在指定的用戶會話中啟動新進程。以下是使用CreateProcessAsUser函數的步驟:
確保你已經獲得了要啟動進程的用戶會話的訪問權限。你可以使用函數WTSQueryUserToken獲取用戶會話的訪問令牌。
使用函數CreateProcessAsUser創建新進程。傳遞的參數包括:
用戶會話的訪問令牌。
要執行的可執行文件的路徑。
命令行參數(如果有)。
進程的安全描述符。
進程的啟動信息。
例如:
// 獲取用戶會話的訪問令牌
HANDLE hToken;
WTSQueryUserToken(sessionId, &hToken);
// 創建新進程
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);
請注意,使用CreateProcessAsUser函數需要管理員權限,并且只能在交互式會話中運行。