我有这个代码来检查.net是否已安装,并且它的工作非常好
string key;
bool data = false;
try
{
key = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall").GetValue("50727").ToString();
}
catch (Exception)
{
}
data = (key == "50727-50727");
label1.text = "installed";
我试图使用相同的代码来更改anothor应用程序的位置,但它会失败
32位系统
string key1;
bool data1 = false;
try
{
key1 = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Wow6432Node").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall").OpenSubKey("Mozilla Firefox 38.0.1 (x86 en-GB)").GetValue("DisplayName").ToString();
}
catch (Exception)
{
}
data1 = (key1 == "Mozilla Firefox 38.0.1 (x86 en-GB)");
label10.Text = "Mozilla Firefox - " + data1.ToString();
64位系统
string key1;
bool data1 = false;
try
{
key1 = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("Microsoft").OpenSubKey("Windows").OpenSubKey("CurrentVersion").OpenSubKey("Uninstall").OpenSubKey("Mozilla Firefox 38.0.1 (x86 en-GB)").GetValue("DisplayName").ToString();
}
catch (Exception)
{
}
data1 = (key1 == "Mozilla Firefox 38.0.1 (x86 en-GB)");
label10.Text = "Mozilla Firefox - " + data1.ToString();
任何想法?
答案 0 :(得分:1)
我会打开注册表并导航到那条路。
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载......
首先,确保名称在那里。如果不是那就是问题。
也可能是您要查找的密钥看起来像HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall {0B0BA4A44-B2AB-4B28-9A45-CBE2BFC5FFD1}
如果是这种情况,则需要遍历Registry.LocalMachine.OpenSubKey(“SOFTWARE”)中的每个项目.OpenSubKey(“Microsoft”)。OpenSubKey(“Windows”)。OpenSubKey(“CurrentVersion”)。 OpenSubKey(“卸载”),然后查找想要的DisplayName。 (见Iterate through registry entries)
就像一个注释,因为你会寻找“Mozilla Firefox 38.0.1(x86 en-GB)”,如果在另一台PC上有任何不准确的话,它就找不到它。例如,如果版本是38.0.2,或者浏览器是美国的EN版本。我会看看Mark Shevchenko对最佳一般检查的评论。使用卸载路径可能不那么可靠。
顺便提一下,这里有一个类似的问题:Check if application is installed in registry
希望这有帮助。