我正在创建一个 WPF 实用程序,它需要访问本地机器的注册表,然后找出程序的安装路径。
我已经通过 Regedit 导航到密钥,它给出了名称、类型和数据,在数据中它显示了安装路径,我想提取安装路径。
我知道我需要导航到注册表中的这个键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
然后我需要使用有关安装路径的信息访问此密钥中的文件夹。
-
我解决了我的问题,如果您在此之后仍然卡住,请给我未来想要解决方案的任何人,请给我发消息,我发现很难找到资源。
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe");
string regFilePath = null;
object objRegisteredValue = key.GetValue("");
registeredFilePath = value.ToString();
要读取注册表项,您应该使用Microsot.Windows.RegistryKey 类,Registry类可以为您打开 RegistryKey。
这个问题对我很有帮助。我想出了一个助手类,想玩新的元组。
示例用法:
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());
}
}
}
}
}