2

我想启动一个具有高完整性级别的进程。父进程作为系统服务 LocalSystem 帐户运行。在一台 Windows 2008 机器中,子进程为高级,而在另一台 2008 机器中,该进程为“中”级。看起来CreateProcessAsUser在不同的机器上获得不同的级别。

if (!WTSQueryUserToken(sessionID, &hToken)) 
{//The admin user logged in the rdp session of "sessionID".
    return;
}
BOOL fSuccess = CreateProcessAsUser(hToken, NULL, cmdLine, NULL, NULL,
TRUE,CREATE_NEW_CONSOLE,NULL, workDir, &si, &pi);

带来什么不同?有没有配置或程序的方法来解决它?

4

2 回答 2

1

不要指望用户的 ACL。当然,LocalSystem 帐户可能包含高完整性级别 ACL,但这不是获取该 IL ACL 的可靠方法。高 IL SID 是众所周知的 ( SID: S-1-16-12288)。将其放入安全描述符中,并将其传递给 CreateProcess。

于 2012-09-10T09:57:54.687 回答
1

您应该能够在启动新进程之前更改检索到的令牌的完整性级别,方法是调用SetTokenInformation并将TOKEN_INFORMATION_CLASS参数设置为TokenIntegrityLevel

于 2012-09-10T20:32:34.767 回答