Пытался преобразовать значение реестра в строку, но получил ошибку
Я перепробовал множество способов конвертировать значение в строку, поэтому в своем наборе инструментов я создал форму, в которой будет указан ваш идентификатор HWID HardWare. Я нашел реестр со значением в нем.
HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Control \ IDConfigDB \ Профили оборудования \ 0001 "\ HwProfileGuid"
-> Это дает длинную строку теста
Я хочу не упоминать, что на этикетке я пробовал все, что знаю, но ничего не работает
Microsoft.Win32.RegistryKey key3;
key3 = "HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Control \ IDConfigDB \ Профили оборудования \0001\HwProfileGuid2";
Итак, это мой код:
string regg = (string)key3.GetValue("");
label2.Text = regg;
Я получил эту форму кода здесь
но это дает ошибку, говоря:
Не удается неявно преобразовать тип 'string' в '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)
{
}
говорит сейчас: не может неявно преобразовать тип "объект" в "строку". Существует явное преобразование (вам не хватает приведения?)
1 ответ
Не удается неявно преобразовать тип 'string' в 'Microsoft.Win32.RegistryKey'
Это вызвано тем, что ваша переменная key3 объявлена как RegistryKey, и вы пытаетесь вставить в нее строку, а не присваивать ее результату метода OpenSubKey. Поместите эту строку в скобки, удалите HKEY_LOCAL_MACHINE\ и поместите "Registry.LocalMachine.OpenSubKey" перед открывающей скобкой.
Этот ключ 3 будет одноразовым, поэтому поместите его в блок "с помощью".
Отсюда у меня нет доступа к реестру Windows, но если HwProfileGuid - это имя ключа, тогда ваш GetEntry("") - это способ прочитать "значение по умолчанию", что было бы правильно. Однако, если HwProfileGuid является именем значения, удалите его и завершающий обратный слеш и поместите HwProfileGuid в кавычки GetEntry.
Следующим моментом является то, что тип значения не может быть строкой. (Опять же... У меня нет реестра, поэтому я не могу проверить) Если вы сохраните результат GetValue в объекте (а не в строке), то вы можете перейти к отладчику, и он покажет вам, какой тип,
Вот хороший пример чтения ключа реестра... /questions/40370965/kak-prochitat-znachenie-klyucha-reestra-c/40370984#40370984