我试图从低完整性过程中创建一个新命名的突变体。此代码在高完整性过程中运行良好,但在中低完整性方面失败。
RtlInitUnicodeString(&Name, L"\\MutantName");
InitializeObjectAttributes(&Attr, &Name, OBJ_INHERIT | OBJ_OPENIF, NULL, NULL);
NTStatus = NtCreateMutant(&Mutant, MUTANT_ALL_ACCESS, &Attr, 0);
我得到了NTStatus = ERROR_ACCESS_DENIED (0xc0000022)
。
是否有可能从低完整性过程中创建突变体?如果是的话 - 有人知道我做错了什么吗?谢谢!
答案 0 :(得分:1)
低完整性过程只能在具有低强制标签的对象目录中创建对象。根对象目录没有此标签。 \BaseNamedObjects
确实如此,因此您可以通过低完整性过程在其中创建突变体:
RtlInitUnicodeString(&Name, L"\\BaseNamedObjects\\MutantName");