如何确定流程的完整性级别
How integrity level of a process is determined?
我想启动一个具有高完整性级别的流程。父进程作为系统服务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。
在TOKEN_INFORMATION_CLASS
参数设置为TokenIntegrityLevel
的情况下,通过调用SetTokenInformation,您应该能够在启动新进程之前更改检索到的令牌的完整性级别。
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在C++中确定文本文件中的元素是字符还是数字
- Python中的for循环与C++有何不同
- 在clang++预处理器中确定gcc工具链版本
- 不确定要在我的main中放入什么才能使我的代码正常工作
- C++setiosflags函数操纵器-未确定的缩进
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 如何使用url确定网站协议
- 通过构造函数动态确定类实现
- 遍历并行数组以确定C++中的最大数字
- C++如果必须在编译时确定大小,std::array 有什么意义?
- 使用不变量来确定二分搜索中的边界条件
- 无论如何,我可以确定构造函数是否存在吗?
- compare_exchange C++函数如何确定竞争条件?
- 如何使用 do while 循环确定最高值和最低值
- 如何确定哪个标头调用 c++ 中的另一个标头
- 在C++中释放内存期间,迭代器与指针有何不同
- 如何确定流程的完整性级别
- 什么是C++中的不确定行为?它与未定义的行为有何不同