Obtient le répertoire de travail courant du processus spécifié
#include <WinAPIProc.au3>
_WinAPI_GetProcessWorkingDirectory ( [$iPID = 0] )
$iPID | [optionnel] Le PID du processus. Par défaut (0) est le processus actuel. |
Succès: | Retourne le chemin d'accès au répertoire de travail. |
Échec: | Retourne la chaîne vide et définit @error <> 0. |
Cette fonction utilise des fonctions non documentées de l'API et peut cesser de fonctionner correctement dans les versions futures de Windows.
L'utilisation de cette fonction pour certains processus pourrait nécessiter des droits d'accès complets. Utilisez la fonction _WinAPI_AdjustTokenPrivileges() pour activer le privilège $SE_DEBUG_NAME avant d'appeler cette fonction.
#RequireAdmin #include <Array.au3> #include <WinAPIHObj.au3> #include <WinAPIProc.au3> Local $aAdjust, $aList = 0 ; Active le privilège "SeDebugPrivilege" pour obtenir les droits d'accès complets à un autre processus Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY)) _WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust) ; Obtient les répertoires de travail de tous les processus du système If Not (@error Or @extended) Then $aList = ProcessList() For $i = 1 To $aList[0][0] $aList[$i][1] = _WinAPI_GetProcessWorkingDirectory($aList[$i][1]) Next EndIf ; Active le privilège SeDebugPrivilege par défaut _WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust) _WinAPI_CloseHandle($hToken) _ArrayDisplay($aList, '_WinAPI_GetProcessCommandLine')