Partager via


GetProcessHandleFromHwnd, fonction

Récupère un handle de processus à partir d’un handle de fenêtre.

Syntaxe

HANDLE WINAPI GetProcessHandleFromHwnd(
  _In_ HWND hwnd
);

Paramètres

hwnd [in]

Type : HWND

Handle de fenêtre.

Valeur retournée

Type : HANDLE

En cas de réussite, retourne le handle du processus propriétaire de la fenêtre.

Si l’opération échoue, retourne NULL.

Notes

Dans les versions précédentes du système d’exploitation, un processus pouvait ouvrir un autre processus (pour accéder à sa mémoire, par exemple) à l’aide d’OpenProcess. Cette fonction réussit si l’appelant dispose des privilèges appropriés ; généralement, l’appelant et le processus cible doivent être le même utilisateur.

Toutefois, sur Windows Vista, OpenProcess échoue dans le scénario où l’appelant a UIAccess et où le processus cible est élevé. Dans ce cas, le propriétaire du processus cible se trouve dans le groupe Administrateurs, mais le processus appelant s’exécute avec le jeton restreint. Il n’est donc pas membre de ce groupe et l’accès au processus avec élévation de privilèges lui est refusé. Toutefois, si l’appelant dispose d’UIAccess, il peut utiliser un hook Windows pour injecter du code dans le processus cible et, à partir du processus cible, renvoyer un handle à l’appelant.

GetProcessHandleFromHwnd est une fonction pratique qui utilise cette technique pour obtenir le handle du processus qui possède le HWND spécifié. Notez qu’il réussit uniquement dans les cas où l’appelant et le processus cible s’exécutent en tant que même utilisateur. Le handle retourné dispose des privilèges suivants : PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SYNCHRONISER. Si d’autres privilèges sont requis, il peut être nécessaire d’implémenter la technique de raccordement explicitement au lieu d’utiliser cette fonction.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
DLL
Oleacc.dll