尝试将注册表值转换为字符串但出现错误
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 的结果存储在一个对象(而不是一个字符串)中,那么您可以使用调试器单步执行,它会告诉您类型是什么.
这是一个读取注册表项的好例子...
我尝试了很多方法将值转换为字符串,因此我在我的工具集中制作了一个表格,可以告诉您您的 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 的结果存储在一个对象(而不是一个字符串)中,那么您可以使用调试器单步执行,它会告诉您类型是什么.
这是一个读取注册表项的好例子...