Evil Jay Ответов: 1

Не удается прочитать значение реестра C#


Всем привет.
Есть некоторые проблемы:
Я использую отказоустойчивую систему с Microsoft Windows Server 2008 sp2.
Где я пытаюсь получить значение реестра как
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(@"Installer\Components\" + myBranch);
if (key.GetValue("1001") != null && (string)key.GetValue("1001") == myKey){
/*TODO: something*/}

Приложение возвращает ошибку:
"Ссылка на объект не установлена на экземпляр объекта"
В других версиях windows все работает

Что я уже пробовал:

Я попробовал установить полный доступ пользователя к реестру, использовал C-libs для получения значения реестра.... все это не работа

Evil Jay

Ошибка была в системном архитекторе.
Несмотря на пути "раздел HKEY_CLASSES_ROOT\установщик\компоненты\myBranch" относится к пути "раздел HKEY_CLASSES_ROOT\Wow6432node\установщик\компоненты\myBranch"

1 Ответов

Рейтинг:
2

OriginalGriff

Первое, что нужно сделать, это выяснить, какой бит равен нулю: возможно, это "ключ", но мы не можем сказать точно.
Поэтому либо используйте отладчик, чтобы выяснить это, либо добавьте код, чтобы проверить, является ли значение ключа после попытки создания подраздела нулевым. Если это так, то создание подраздела не удалось - и это, скорее всего, проблема с разрешениями (вам нужен доступ администратора?), а не что-то, что мы можем исправить отсюда.


Evil Jay

Ключ-это не проблема. Отладчик говорит, что команда "GetValue ()" не работает и возвращает не найденное исключение. Это прецедентная ситуация. В реестре есть ветвь и ключ, а также значение в ключе. Переменная 'key' получает путь в реестре правильно.
Доступ администратора уже используется.

OriginalGriff

"Ссылка на объект" - это очень специфическое исключение: это происходит, когда значение равно null, и вы пытаетесь получить доступ к полю, свойству или методу этого значения.
Как вы проверили, что ключ не равен нулю?

Evil Jay

Я добавил журнал, где был создан/или найден подраздел (я проверил все методы, которые позволяли получить ключ, и ключ всегда был исправлен). Его путь был в реестре (проверен редактором реестра).