0

Wenn ich die Funktion CreateProcessAsUser()aufrufe, wird ein Fehler zurückgegeben.
Und dann der Aufruf an GetLastError(), um zu überprüfen, warum der Fehler aufgetreten ist, gibt den Wert 0x16f zurück.Was bedeutet der Fehlerwert 0x16f, der von der Funktion GetLastError() zurückgegeben wird

Ich konnte nicht herausfinden, was der Fehler bedeuten soll.

+0

Der erste Stop für Fehlercodes ist 'net helpmsg'. In diesem Fall gibt 'net helpmsg 367' zurück "Die Erstellung des Prozesses wurde blockiert." Nicht sehr klar, leider, und Googling nicht viel auftauchen. Möglicherweise durch eine Antiviren-Software verursacht, die über Ihren Kindprozess entscheidet, ist dieser bösartig? Oder Ihr Prozess wird einem Jobobjekt mit Einschränkungen zugewiesen, die Sie daran hindern, einen untergeordneten Prozess zu starten? Oder vielleicht etwas mit der Windows Store-Sandbox zu tun? (Wir können Ihnen vielleicht mehr helfen, wenn Sie die Umstände erklären können, unter denen der Fehler aufgetreten ist.) –

+0

Einige Hervorhebungen, einige Rechtschreibkorrekturen und einige Verbesserungen der Grammatik (hoffe ich). – zx485

Antwort

1

ERROR_CHILD_PROCESS_BLOCKED umgewandelt NTSTATUS - STATUS_CHILD_PROCESS_BLOCKED (0xC000049D) - I in ntoskrnl.exe zu suchen und zu finden, dass dieser Code nur von 2 Platz verwiesen, wenn NtCreateUserProcess genannt - von SeSubProcessToken und für Protokollfehler:

NtCreateUserProcess 
    PspAllocateProcess 
    PspInitializeProcessSecurity 
     SeSubProcessToken 
     if (!SeTokenIsNoChildProcessRestricted(Token)) 
     { 
      status = STATUS_CHILD_PROCESS_BLOCKED; 
     } 


    if (PspAllocateProcess() == STATUS_CHILD_PROCESS_BLOCKED) 
    { 
    EtwTraceDeniedTokenCreation(); 
    } 

so, wenn SeTokenIsNoChildProcessRestricted(Token) Rückkehr FALSE können Sie ERROR_CHILD_PROCESS_BLOCKED von CreateProcess bekommen.

das ist neu api, existieren nur von 1607 Build von win10

#if (NTDDI_VERSION >= NTDDI_WIN10_RS1) 
NTKERNELAPI 
BOOLEAN 
SeTokenIsNoChildProcessRestricted(
    _In_ PACCESS_TOKEN Token 
    );// return (Token->TokenFlags & 0x80000) != 0; 
#endif 

in ntifs.h deklariert, aber nicht dokumentiert.

so Prozess, der Anruf CreateProcessAsUser ist irgendwie eingeschränkt. Windows Store Sandbox, wie Harry Johnston erraten?

Verwandte Themen