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 |