Processus.MainModule --> “Accès refusé”
Je veux gérer cela différemment,
c'est à dire. déterminer si j'ai accès ou pas.
Est-il possible de voir si vous avez accès au module principal ou pas?
foreach (Process p in Process.GetProcesses())
{
try
{
//This throws error for some processes.
if (p.MainModule.FileName.ToLower().EndsWith(ExeName, StringComparison.CurrentCultureIgnoreCase))
{
//Do some stuff
}
}
catch (Exception)
{
//Acess denied
}
}
Ici, nous allons à nouveau. Ont un look @ stackoverflow.com/questions/2774527/...
OriginalL'auteur Niklas | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
Si ce qui se passe sur Windows 7 ou Vista avec élévation de processus que vous pouvez obtenir le processus de chemin d'accès directement à l'aide de win api sans se faire d'erreur accès refusé.
Voir ce liens:
Accès refusé lors de l'obtention de processus de chemin
Comment Obtenir Élevée Processus de Chemin dans .Net
OriginalL'auteur Giorgi
Je vois deux causes possibles de l'exception:
Il suffit d'utiliser un try/catch pour votre boucle à faire face à ces processus.
OriginalL'auteur Dmitriy Konovalov
Utilisation pinvoke avec
ProcessAccessFlags.QueryLimitedInformation
. Cela vous permettra de saisir le nom de fichier du processus, sans devoir spécial des privilèges d'administrateur et fonctionne à travers x32 et x64 processus.OriginalL'auteur user99999991