尝试将注册表值转换为字符串但出现错误

Tried to convert a registry value to a string but got some error

我尝试了很多方法将值转换为字符串,因此我在我的工具集中制作了一个表格,可以告诉您您的 HWID 硬件 ID。我找到了包含该值的注册表。

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\IDConfigDB\Hardware Profiles[=12=]01"\HwProfileGuid"

-> 这给出了长测试字符串

我想不同意在标签上我尝试了所有我知道的方法但是 none 工作 我最近尝试的是

Microsoft.Win32.RegistryKey key3;
key3 = "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\IDConfigDB\Hardware Profiles[=13=]01\HwProfileGuid2";

所以这是我的代码:

string regg = (string)key3.GetValue("");
label2.Text = regg;

我在这里得到了代码表

但它给出了一个错误:

Cannot implicitly convert type 'string' to 'Microsoft.Win32.RegistryKey'

我看遍了google什么现在,但他们总是在谈论别的事情。无论我如何尝试,它都给出了一些错误。我只想在点击标签时显示 HWID 值。

我正在使用 C# Visual Studio 2017.

我什至试过了

try
            {

                label2.Text = Registry.LocalMachine.OpenSubKey("SYSTEM\ControlSet001\Control\IDConfigDB\Hardware Profiles\0001\", true).GetValue("HwProfileGuid");

            }
            catch(Exception ex)
            {

            }

现在说: 无法将类型 'object' 隐式转换为 'string'。存在显式转换(您是否缺少转换?)

Cannot implicitly convert type 'string' to 'Microsoft.Win32.RegistryKey'

是因为您的 key3 变量被声明为 RegistryKey,而您试图将字符串放入其中,而不是将其分配给 OpenSubKey 方法的结果。将该字符串放在括号中,删除 HKEY_LOCAL_MACHINE\ 并将 "Registry.LocalMachine.OpenSubKey" 放在左括号之前。

那个 key3 是一次性的,所以把它放在 'using' 块中。

我无法从这里访问 Windows 注册表,但是如果 HwProfileGuid 是密钥的名称,那么你的 GetEntry("") 是读取 'default value' 的方式,这是正确的。但是,如果 HwProfileGuid 是值的名称,则删除它和结尾的反斜杠,并将 HwProfileGuid 放在 GetEntry 的引号内。

下一点是值的类型可能不是字符串。 (再次...我没有注册表,所以无法检查)如果您将 GetValue 的结果存储在一个对象(而不是一个字符串)中,那么您可以使用调试器单步执行,它会告诉您类型是什么.

这是一个读取注册表项的好例子...