当我调用函数CreateProcessAsUser()时,它返回失败。
然后GetLastError()检查错误发生原因的调用返回值 0x16f。
我无法找出错误应该是什么意思。
当我调用函数CreateProcessAsUser()时,它返回失败。
然后GetLastError()检查错误发生原因的调用返回值 0x16f。
我无法找出错误应该是什么意思。
ERROR_CHILD_PROCESS_BLOCKED已转换NTSTATUS- STATUS_CHILD_PROCESS_BLOCKED( 0xC000049D) - 我搜索ntoskrnl.exe并发现此代码在NtCreateUserProcess调用时仅从 2 个位置引用 - 来自SeSubProcessToken和用于日志错误:
NtCreateUserProcess
PspAllocateProcess
PspInitializeProcessSecurity
SeSubProcessToken
if (!SeTokenIsNoChildProcessRestricted(Token))
{
status = STATUS_CHILD_PROCESS_BLOCKED;
}
if (PspAllocateProcess() == STATUS_CHILD_PROCESS_BLOCKED)
{
EtwTraceDeniedTokenCreation();
}
因此,当您SeTokenIsNoChildProcessRestricted(Token)返回时,FALSE您可以ERROR_CHILD_PROCESS_BLOCKED从CreateProcess.
这是新的 api,仅存在于 win10 的 1607 版本
#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
NTKERNELAPI
BOOLEAN
SeTokenIsNoChildProcessRestricted(
_In_ PACCESS_TOKEN Token
);// return (Token->TokenFlags & 0x80000) != 0;
#endif
声明ntifs.h但未记录在案。
所以过程,失败的调用CreateProcessAsUser在某种程度上受到限制。Windows Store 沙盒,Harry Johnston 怎么猜?