comment trouver le chemin d’exécution d’un logiciel installé

Comment puis-je trouver le chemin d’exécution d’un logiciel installé dans c # pour, par exemple, un lecteur multimédia ou un lecteur vlc? J’ai juste besoin de trouver leur chemin d’exécution. si j’ai un lecteur vlc installé dans mon lecteur D. comment puis-je trouver le chemin du VLC.exe à partir de mon codage c #

Cette méthode fonctionne pour tout exécutable situé dans un dossier défini dans la variable Windows PATH:

private ssortingng LocateEXE(Ssortingng filename) { Ssortingng path = Environment.GetEnvironmentVariable("path"); Ssortingng[] folders = path.Split(';'); foreach (Ssortingng folder in folders) { if (File.Exists(folder + filename)) { return folder + filename; } else if (File.Exists(folder + "\\" + filename)) { return folder + "\\" + filename; } } return Ssortingng.Empty; } 

Ensuite, utilisez-le comme suit:

 ssortingng pathToExe = LocateEXE("example.exe"); 

Comme la méthode de Fredrik, il ne trouve que des chemins pour certains exécutables

En utilisant le code C #, vous pouvez trouver le chemin de certains excutables de cette façon:

 private const ssortingng keyBase = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"; private ssortingng GetPathForExe(ssortingng fileName) { RegistryKey localMachine = Registry.LocalMachine; RegistryKey fileKey = localMachine.OpenSubKey(ssortingng.Format(@"{0}\{1}", keyBase, fileName)); object result = null; if (fileKey != null) { result = fileKey.GetValue(ssortingng.Empty); } fileKey.Close(); return (ssortingng)result; } 

Utilisez-le comme ça:

 ssortingng pathToExe = GetPathForExe("wmplayer.exe"); 

Cependant, il se peut très bien que l’application que vous souhaitez n’ait pas de clé App Paths.

Consultez MsiEnumProductsEx

Cet article stackoverflow.com décrit comment obtenir l’application associée à une extension de fichier particulière.

Peut-être pourriez-vous utiliser cette technique pour associer l’application à certaines extensions, telles que avi ou wmv – soit Medial Player, soit dans votre cas le lecteur VLC?

J’ai utilisé la clé de registre CurrentVersion \ Installer \ Folders. Il suffit de passer le nom du produit.

 private ssortingng GetAppPath(ssortingng productName) { const ssortingng foldersPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders"; var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); var subKey = baseKey.OpenSubKey(foldersPath); if (subKey == null) { baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); subKey = baseKey.OpenSubKey(foldersPath); } return subKey != null ? subKey.GetValueNames().FirstOrDefault(kv => kv.Contains(productName)) : "ERROR"; }