Retrieving file installation path from registry

偶尔善良 提交于 2019-12-30 18:59:53

问题


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 key via Regedit and it gives a Name, Type and Data, within the Data it shows the installation path, I would like to extract the installation path.

I know I need to navigate to this key within the registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\

then I need to access a folder within this key with the information regarding the installation path.

-


回答1:


I solved my problem, to anyone who wants a solution in the future if your still stuck after this please message me, I found it was hard to find the resources.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe");
string regFilePath = null;

object objRegisteredValue = key.GetValue("");

registeredFilePath = value.ToString();



回答2:


To read registry keys you should use Microsot.Windows.RegistryKey class, class Registry can open for you the RegistryKey.




回答3:


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());
            }
         }
      }
   }

}


来源:https://stackoverflow.com/questions/12008331/retrieving-file-installation-path-from-registry

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!