5

我正在创建一个 WPF 实用程序,它需要访问本地机器的注册表,然后找出程序的安装路径。

我已经通过 Regedit 导航到密钥,它给出了名称、类型和数据,在数据中它显示了安装路径,我想提取安装路径。

我知道我需要导航到注册表中的这个键:

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

然后我需要使用有关安装路径的信息访问此密钥中的文件夹。

-

4

3 回答 3

11

我解决了我的问题,如果您在此之后仍然卡住,请给我未来想要解决方案的任何人,请给我发消息,我发现很难找到资源。

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

object objRegisteredValue = key.GetValue("");

registeredFilePath = value.ToString();
于 2012-08-20T16:00:20.340 回答
0

要读取注册表项,您应该使用Microsot.Windows.RegistryKey 类Registry类可以为您打开 RegistryKey。

于 2012-08-17T15:50:32.217 回答
0

这个问题对我很有帮助。我想出了一个助手类,想玩新的元组。

示例用法:

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

班上:

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

}
于 2017-11-07T12:33:31.407 回答