低完整性进程可以创建一个命名的突变对象吗?
Can low integrity process create a named mutant object?
我正在尝试从低完整性进程创建一个新的命名突变体。此代码在高完整性过程中运行良好,但在低完整性和中等完整性过程中失败。
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)
。
是否可以从低完整性进程创建突变体?如果是 - 有人知道我做错了什么吗?谢谢!
低完整性进程只能在具有低强制标签的对象目录中创建对象。根对象目录没有此标签。 \BaseNamedObjects
可以,所以你可以从低完整性进程中创建你的突变体:
RtlInitUnicodeString(&Name, L"\BaseNamedObjects\MutantName");
我正在尝试从低完整性进程创建一个新的命名突变体。此代码在高完整性过程中运行良好,但在低完整性和中等完整性过程中失败。
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)
。
是否可以从低完整性进程创建突变体?如果是 - 有人知道我做错了什么吗?谢谢!
低完整性进程只能在具有低强制标签的对象目录中创建对象。根对象目录没有此标签。 \BaseNamedObjects
可以,所以你可以从低完整性进程中创建你的突变体:
RtlInitUnicodeString(&Name, L"\BaseNamedObjects\MutantName");