从注册表中检索文件安装路径
我正在创建一个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" );
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()); } } } } }