低完整性过程可以创建一个命名的突变对象?

时间:2017-05-11 16:58:28

标签: windows winapi synchronization mutex

我试图从低完整性过程中创建一个新命名的突变体。此代码在高完整性过程中运行良好,但在中低完整性方面失败。

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)

是否有可能从低完整性过程中创建突变体?如果是的话 - 有人知道我做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

低完整性过程只能在具有低强制标签的对象目录中创建对象。根对象目录没有此标签。 \BaseNamedObjects确实如此,因此您可以通过低完整性过程在其中创建突变体:

RtlInitUnicodeString(&Name, L"\\BaseNamedObjects\\MutantName");