Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 |
|