Пытался преобразовать значение реестра в строку, но получил ошибку

Я перепробовал множество способов конвертировать значение в строку, поэтому в своем наборе инструментов я создал форму, в которой будет указан ваш идентификатор 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

Другие вопросы по тегам