我要启动一个具有较高完整性级别的进程。父进程作为系统服务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);

是什么带来了差异?有没有配置或程序的方法来解决呢?

最佳答案

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

08-05 23:01