Рабочий процесс вызывает OpenSubKey, но возвращает значение null при доступе к службе удаленного реестра.

Мой веб-сервер развернут в IIS 6. Веб-сервер успешно запускает службу удаленного реестра на удаленном компьютере, создавая процесс для запуска некоторых команд удаленных операций.

Эта первая строка работает успешно. Но вторая строка возвращает ноль.

#1 RegistryKey remoteRegKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "139.24.185.27");

#2 RegistryKey targetKey = remoteRegKey.OpenSubKey(@"SOFTWARE\Wow6432Node\XXXX\XXXX\Config\Modality", true);

Я попытался найти причину из MSDN. Он сообщает только об одном случае, что он вернет ноль. Дело в том, что подраздел не существует.

  • Если у него недостаточно прав, он выдаст исключение. Но подключ действительно существует. Я меняю другую машину для отладки моего кода с помощью Visual Studio 2008. Она может успешно выполнять две строки.

  • Если у него достаточно прав, он должен не только открыть LocalMachine, но и любой из его подразделов.

Я совсем запутался в этом.


person Cary    schedule 01.04.2010    source источник


Ответы (1)


Запись реестра Wow6432 указывает, что вы используете 64-разрядную версию Windows. ОС использует этот ключ для представления отдельного представления HKEY_LOCAL_MACHINE\SOFTWARE для 32-разрядных приложений, работающих в 64-разрядной версии Windows. Когда 32-разрядное приложение запрашивает значение в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\\, приложение считывает данные из подраздела HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\\.

person Cary    schedule 25.05.2010