当我调用函数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 怎么猜?