我正在构建一个应用程序,我需要能够从用户的本地注册表中收集信息,然后利用它来执行各种任务。我知道某个注册表项所在的位置,但我似乎无法弄清楚如何正确提取数据。以下是我要提取的内容:
我的理想事件发生如下:实用程序搜索注册表值,确定并存储它(在var或其他内容中),然后向用户显示一个按钮以进入下一个屏幕(I&#39 ; m使用WinForms)。我已经将按钮设置为"隐形"预先。请参阅附带的代码。
using (RegistryKey key = Registry.LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\Software\Wow6432Node\DovetailGames\FSX\10.0"))
{
if (key != null)
{
Object o = key.GetValue("Install_Path");
if (o != null)
{
sc3op2.Visible = true; //Button is "sc3op2"
}
}
}
我想我的主要问题是提取这些值的代码格式。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
您的回答可能是here。显然,它与32位和64位平台的应用程序设置的虚拟化有关。请参阅更新的部分If it returns null, set your build architecture to Any CPU
。在我的64位平台上,当使用x86或任何CPU构建配置构建时,我将变为null。但它在使用x64构建时返回值。
const string keyName = @"Software\Wow6432Node\DovetailGames\FSX";
var o = Registry.LocalMachine.OpenSubKey(keyName, false);
var value = o?.GetValue("Install_Path", "-");
Console.WriteLine(value);
答案 1 :(得分:0)
首先,您需要删除HKEY_LOCAL_MACHINE。 你需要在字符串之前使用@。
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Apple Inc.\Apple Application Support"))
{
if (key != null)
{
Object o = key.GetValue("Installdir");
if (o != null)
{
// do something
}
}
}