注册表键映射
问题描述:
我正在构建一个应用程序,我需要能够从用户的本地注册表中收集信息,然后利用它执行各种任务。我知道某个注册表项所在的位置,但似乎无法弄清楚如何正确提取数据。这里是我想要提取的那个:注册表键映射
我的理想事件会发生如下:实用程序搜索注册表值,确定它并将其存储(在var或某物中),然后将按钮显示给用户进入下一个屏幕(我正在使用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"
}
}
}
我想我的主要问题是代码提取这些值的格式。任何帮助,将不胜感激。谢谢。
答
您的答案可能是here。显然,它与32位和64位平台的应用程序设置的虚拟化有关。请参阅更新部分If it returns null, set your build architecture to Any CPU
。在我的64位平台上,当使用x86或任何CPU构建配置构建时,我会变为空。但是它在使用x64构建时返回值。
const string keyName = @"Software\Wow6432Node\DovetailGames\FSX";
var o = Registry.LocalMachine.OpenSubKey(keyName, false);
var value = o?.GetValue("Install_Path", "-");
Console.WriteLine(value);
答
首先您需要删除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
}
}
}
不知道,但我觉得你的问题是,你需要从“路径”删除'HKEY_LOCAL_MACHINE'使用,因为用'Regisrty.LocalMachine'你已经在HKEY_LOCAL_MACHINE –
@GianPaolo那本身并不起作用,但我明白了为什么这是错误的,我会把它拿出来,但没有运气。 – guisbonddev
代码中的路径在最后包含'10.0'类别,它与缺失截图不同。这是故意的吗? –