我正在使用这两个注册表项。
64位Firefox版本:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (????)
32位Firefox版本:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox xx.xx.xx (x86 en-US)
我想要的是阅读该路径中名为InstallLocation
的密钥。问题在于道路。该路径有Firefox版本,其中包含版本号。
我可以硬编码路径,但是当Firefox更新时,路径也会更新,因此在更新后它不会工作。
有没有办法动态地只读取路径的一部分并解析出版本以达到密钥?
换句话说,有没有办法读取Mozilla Fireox
之前的路径并忽略其余的路径,因为我只想看看它是否存在此路径,如果存在,请进入路径以获取密钥 - 值。
更新
感谢konkked
var has32bit =
Registry.LocalMachine
.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
.GetSubKeyNames()
.Any(a=>a.StartsWith("Mozilla Firefox"));
var has64bit =
Registry.LocalMachine
.OpenSubKey("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")
.GetSubKeyNames()
.Any(a=>a.StartsWith("Mozilla FireFox"));
如何在Mozilla Firefox文件夹中获取键值?因为上面的代码只返回false为真。
答案 0 :(得分:0)
尝试使用以下内容,它将具有安装路径
var path = Registry.GetValue(@" HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \ firefox.exe","",null);
答案 1 :(得分:0)
您可以使用RegistryKey.GetSubKeyNames Method ()获取条目的所有子项,然后在哪里查看是否有任何FireFox
var has32bit =
Registry.LocalMachine
.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
.GetSubKeyNames()
.Any(a=>a.StartsWith("Mozilla Firefox"));
var has64bit =
Registry.LocalMachine
.OpenSubKey("SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")
.GetSubKeyNames()
.Any(a=>a.StartsWith("Mozilla FireFox"));
还要在评论中注明
应该有更好的方法来做到这一点而不是收集alllll(原文如此) 卸载内部的密钥,因为它可以变得非常大。 @MarcB谢谢 你这个。
我认为没有更好的方法可以部分匹配子键
并回答评论:
谢谢!它的工作。是否有远离(原文如此)获取其中的值 像InstallLocation
这样的完整路径(原文如此)
您可以在决定使用哪个版本时获取实际的子项,但我不确定您将如何决定,但以下是如何访问这些值的示例:
var subkey32BitBase =
Registry.LocalMachine
.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
var fireFoxKeys = subkey32BitBase.GetSubKeyNames(subkey32base);
foreach(var fireFoxSubKey in fireFoxSubKeys)
{
Console.WriteLine(
subkey32BitBase
.GetSubKey(fireFoxSubKey)
.GetValue("InstallLocation")
);
}
答案 2 :(得分:0)
如果安装了Firefox,它会将自己注册到HTML文件的“打开方式...”列表中。
打开html文件的应用程序名称存储在OpenWithList子项下的文件类型的注册表项下。应用程序本身的路径存储在HKCR \ Applications。
下