Accès refusé lors de l’obtention du chemin de processus

J’essaie d’obtenir le chemin de processus par pid mais j’obtiens Win32Exception (identificateur d’access refusé).

Le code ressemble à ceci:

ssortingng path = Process.GetProcessById(pid).MainModule.FileName 

J’ai essayé d’utiliser OpenProcess avec GetModuleFileNameEx mais OpenProcess renvoie 0. J’ai même essayé d’activer SeDebugPrivilege selon C # – Comment activer SeDebugPrivilege mais cela n’a pas aidé.

Le code ci-dessus fonctionne pour la plupart des processus, mais génère une erreur pour SynTPHelper.exe (Synaptics Pointing Device Helper). L’application est exécutée sous le même nom d’utilisateur que mon code. Mon application et le processus s’exécutent tous deux en 64 bits.

Est-il possible de récupérer le chemin sans exécuter mon application en tant qu’administrateur?

modifier

Le Gestionnaire des tâches peut “ouvrir un fichier” même si je ne l’exécute pas en tant qu’administrateur.

    Finalement j’ai réussi à le résoudre. Il s’est avéré qu’il existe une nouvelle fonction dans Vista et au-dessus pour obtenir le chemin d’access et le nouvel access au processus (PROCESS_QUERY_LIMITED_INFORMATION):

    QueryFullProcessImageName

    Voici le code qui fonctionne à partir d’un processus non élevé:

      private static ssortingng GetExecutablePathAboveVista(UIntPtr dwProcessId) { SsortingngBuilder buffer = new SsortingngBuilder(1024); IntPtr hprocess = OpenProcess(ProcessAccessFlags.PROCESS_QUERY_LIMITED_INFORMATION, false, dwProcessId); if (hprocess != IntPtr.Zero) { try { int size = buffer.Capacity; if (QueryFullProcessImageName(hprocess, 0, buff, out size)) { return buffer.ToSsortingng(); } } finally { CloseHandle(hprocess); } } return ssortingng.Empty; } 

    Eh bien, il n’est certainement pas rare que des services suppriment des droits d’access, de sorte que même un administrateur ne puisse pas ouvrir le processus. Un service dispose de suffisamment de privilèges pour le faire, les composants DRM tels que audiodg.exe le font facilement. Un assistant de tapis de souris ne me semble pas nécessiter une telle protection. Mais bon, pourquoi quelqu’un aurait-il jamais besoin de jouer avec un assistant de tapis de souris?