Freigeben über


OpenProcess-Funktion (processthreadsapi.h)

Öffnet ein vorhandenes lokales Prozessobjekt.

Syntax

HANDLE OpenProcess(
  [in] DWORD dwDesiredAccess,
  [in] BOOL  bInheritHandle,
  [in] DWORD dwProcessId
);

Parameter

[in] dwDesiredAccess

Der Zugriff auf das Prozessobjekt. Dieses Zugriffsrecht wird mit dem Sicherheitsdeskriptor für den Prozess überprüft. Bei diesem Parameter kann es sich um eines oder mehrere der Prozesszugriffsrechte handelt.

Wenn der Aufrufer die SeDebugPrivilege-Berechtigung aktiviert hat, wird der angeforderte Zugriff unabhängig vom Inhalt des Sicherheitsdeskriptors gewährt.

[in] bInheritHandle

Wenn dieser Wert TRUE ist, erben von diesem Prozess erstellte Prozesse das Handle. Andernfalls erben die Prozesse dieses Handle nicht.

[in] dwProcessId

Der Bezeichner des lokalen Prozesses, der geöffnet werden soll.

Wenn der angegebene Prozess der System-Leerlaufprozess (0x00000000) ist, schlägt die Funktion fehl, und der letzte Fehlercode lautet ERROR_INVALID_PARAMETER. Wenn der angegebene Prozess der Systemprozess oder einer der CSRSS-Prozesse (Client Server Run-Time Subsystem) ist, schlägt diese Funktion fehl, und der letzte Fehlercode ist ERROR_ACCESS_DENIED , weil ihre Zugriffsbeschränkungen verhindern, dass Code auf Benutzerebene sie öffnet.

Wenn Sie GetCurrentProcessId als Argument für diese Funktion verwenden, sollten Sie getCurrentProcess anstelle von OpenProcess verwenden, um die Leistung zu verbessern.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein offenes Handle für den angegebenen Prozess.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Um ein Handle für einen anderen lokalen Prozess zu öffnen und Vollzugriffsrechte zu erhalten, müssen Sie die SeDebugPrivilege-Berechtigung aktivieren. Weitere Informationen finden Sie unter Ändern von Berechtigungen in einem Token.

Das von der OpenProcess-Funktion zurückgegebene Handle kann in jeder Funktion verwendet werden, die ein Handle für einen Prozess erfordert, z. B. die Wartefunktionen, sofern die entsprechenden Zugriffsrechte angefordert wurden.

Wenn Sie mit dem Handle fertig sind, schließen Sie es mithilfe der CloseHandle-Funktion .

Beispiele

Ein Beispiel finden Sie unter Erstellen einer Momentaufnahme und Anzeigen von Prozessen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile processthreadsapi.h (enthalten Windows.h unter Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

Prozess- und Threadfunktionen

Prozesse

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory