Windows 什么';s GetLastError()函数返回的错误值0x16f的含义

Windows 什么';s GetLastError()函数返回的错误值0x16f的含义,windows,winapi,createprocess,createprocessasuser,getlasterror,Windows,Winapi,Createprocess,Createprocessasuser,Getlasterror,当我调用函数CreateProcessAsUser()时,它返回一个失败。 然后调用GetLastError()检查错误发生的原因,返回值0x16f 我无法找出错误的含义。错误子进程阻塞已转换NTSTATUS-状态子进程阻塞(0xC000049D)-我在ntoskrnl.exe中搜索,发现调用NtCreateUserProcess时,此代码仅从2个位置引用-从SeSubProcessToken和日志错误: NtCreateUserProcess PspAllocateProcess

当我调用函数
CreateProcessAsUser()
时,它返回一个失败。
然后调用
GetLastError()
检查错误发生的原因,返回值0x16f


我无法找出错误的含义。

错误子进程阻塞
已转换
NTSTATUS
-
状态子进程阻塞
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)
return
FALSE
时,您可以从
CreateProcess
获得
错误\u子进程\u阻塞的

这是新的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应用商店沙盒,正如Harry Johnston所猜测的那样?

错误代码的第一站是
net helpmsg
。在本例中,
nethelpmsg367
返回“进程创建已被阻止”。不幸的是,不太清楚,谷歌搜索也没有显示太多。可能是由反病毒软件决定您的子进程是恶意的引起的?或者您的流程被分配给作业对象,但有限制阻止您启动子流程?或者可能与Windows应用商店沙箱有关?(如果您能解释错误发生的情况,我们可能会提供更多帮助。)一些突出显示,一些拼写修复,以及一些语法改进(我希望如此)。