注册表键映射

时间:2017-07-31 21:30:51

标签: c# winforms

我正在构建一个应用程序,我需要能够从用户的本地注册表中收集信息,然后利用它来执行各种任务。我知道某个注册表项所在的位置,但我似乎无法弄清楚如何正确提取数据。以下是我要提取的内容:

我的理想事件发生如下:实用程序搜索注册表值,确定并存储它(在var或其他内容中),然后向用户显示一个按钮以进入下一个屏幕(I&#39 ; m使用WinForms)。我已经将按钮设置为"隐形"预先。请参阅附带的代码。

enter image description here

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"
        }
    }
}

我想我的主要问题是提取这些值的代码格式。任何帮助,将不胜感激。感谢。

2 个答案:

答案 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。 你需要在字符串之前使用@。

看看Screenshot

    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
                }
            }
        }