Retrieving file installation path from registry

后端 未结 3 1714
谎友^
谎友^ 2021-01-18 14:44

I am creating a WPF utility which needs to access the registry of the local machine, to then find out the installation path of the program.

I\'ve navigated to the ke

3条回答
  •  悲哀的现实
    2021-01-18 15:21

    This question was very helpful to me. I came up with a helper class, wanting to play with the new Tuples.

    Example usage:

    public string SkypeExePath => InstalledApplicationPaths.GetInstalledApplicationPath( "lync.exe" );
    

    The class:

    public static class InstalledApplicationPaths
    {
    
       public static string GetInstalledApplicationPath( string shortName )
       {
          var path = GetInstalledApplicationPaths().SingleOrDefault( x => x?.ExectuableName.ToLower() == shortName.ToLower() )?.Path;
          return path;
       }
    
       public static IEnumerable<(string ExectuableName, string Path)?> GetInstalledApplicationPaths()
       {
          using ( RegistryKey key = Registry.LocalMachine.OpenSubKey( @"Software\Microsoft\Windows\CurrentVersion\App Paths" ) )
          {
             foreach ( var subkeyName in key.GetSubKeyNames() )
             {
                using ( RegistryKey subkey = key.OpenSubKey( subkeyName ) )
                {
                   yield return (subkeyName, subkey.GetValue( "" )?.ToString());
                }
             }
          }
       }
    
    }
    

提交回复
热议问题