Partager via


OpenProcess, fonction (processthreadsapi.h)

Ouvre un objet de processus local existant.

Syntaxe

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

Paramètres

[in] dwDesiredAccess

Accès à l’objet de processus. Ce droit d’accès est vérifié par rapport au descripteur de sécurité pour le processus. Ce paramètre peut être un ou plusieurs des droits d’accès au processus.

Si l’appelant a activé le privilège SeDebugPrivilege, l’accès demandé est accordé quel que soit le contenu du descripteur de sécurité.

[in] bInheritHandle

Si cette valeur est TRUE, les processus créés par ce processus héritent du handle. Sinon, les processus n’héritent pas de ce handle.

[in] dwProcessId

Identificateur du processus local à ouvrir.

Si le processus spécifié est le processus inactif système (0x00000000), la fonction échoue et le dernier code d’erreur est ERROR_INVALID_PARAMETER. Si le processus spécifié est le processus Système ou l’un des processus CSRSS (Client Server Run-Time Subsystem), cette fonction échoue et le dernier code d’erreur est ERROR_ACCESS_DENIED dû au fait que leurs restrictions d’accès empêchent le code utilisateur de les ouvrir.

Si vous utilisez GetCurrentProcessId comme argument de cette fonction, envisagez d’utiliser GetCurrentProcess au lieu d’OpenProcess pour améliorer les performances.

Valeur retournée

Si la fonction réussit, la valeur de retour est un handle ouvert pour le processus spécifié.

Si la fonction échoue, la valeur de retour est NULL. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Pour ouvrir un handle à un autre processus local et obtenir des droits d’accès complets, vous devez activer le privilège SeDebugPrivilege. Pour plus d’informations, consultez Modification des privilèges dans un jeton.

Le handle retourné par la fonction OpenProcess peut être utilisé dans n’importe quelle fonction qui nécessite un handle pour un processus, comme les fonctions d’attente, à condition que les droits d’accès appropriés aient été demandés.

Lorsque vous avez terminé avec le handle, veillez à le fermer à l’aide de la fonction CloseHandle .

Exemples

Pour obtenir un exemple, consultez Prise d’un instantané et Affichage des processus.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête processthreadsapi.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

Fonctions de processus et de thread

Processus

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory