Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программное обеспечение Windows (http://forum.oszone.net/forumdisplay.php?f=7)
-   -   [решено] Ограничения доступа к реестру Windows (http://forum.oszone.net/showthread.php?t=314904)

mrFduch 16-05-2016 12:03 2635111

Ограничения доступа к реестру Windows
 
Здравствуйте.

Наткнулся на ограничение по доступу на чтение к ветвям реестра Windows (Win7, Win server 2008) такого вида:

Команды экспорта реестра в файл:
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"
и
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders"

Первая отрабатывает, если запускать ее из командной строки (cmd.exe) и из стороннего коммандера (unreal commander).
Вторая команда отрабатывает только из командной строки. Запуск из других приложений - приводит к сообщению "Ошибка: Не удается найти указанный раздел или параметр в реестре.".

Все запускается под пользователем, который является на машинах Локальным админом.
Проставление полного доступа к вложенным веткам для "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer" в редакторе реестра - ни к чему не приводит. Собственно, доступ имеется, т.к. из командной строки экспорт реестра работает нормально.

Подскажите пожалуйста, что это может быть за ограничение.

Iska 16-05-2016 14:58 2635157

mrFduch, разрядность ОС — x64? А:
Цитата:

Цитата mrFduch
других приложений »

предполагаю — x86, да?!

mrFduch 16-05-2016 15:35 2635164

Верное предположение!
Хотя мне не хватает знаний о работе x86-приложений под ОС 64-bit, что бы за него зацепиться.

Iska 16-05-2016 23:28 2635271

mrFduch, тогда, полагаю, дело вот в чём: при работе x86-приложений в x64-окружении включается т.н. редирект — ОС перенаправляет обращения функций WinAPI к ряду предопределённых папок каталогов файловой системы в другое расположение, то же происходит и при работе с реестром (подобное поведение ОС приложение, со своей стороны, может, в принципе, отключить).

То есть, исполняя:
Код:

reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders"
из-под x86-приложения («unreal commander») в x64-окружении («Win7, Win server 2008»), Вы исполняете не x64-версию «C:\Windows\System32\reg.exe», а на самом деле — исполняете x86-версию «C:\Windows\SysWOW64\reg.exe», которая, соответственно, обращается в реальности не к разделу «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders», а к разделу «HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\Folders», которого, вероятно, не находит (у меня, во всяком случае, подраздела «Folders» там нет). Отсюда, надо полагать, и сообщение об ошибке.

Скучные подробности (вкратце):
File System Redirector (Windows)
Registry Redirector (Windows)
WoW64 - Wikipedia, the free encyclopedia
(ну, и по ссылкам оттуда погулять).

Какой выход из данной ситуации? Самое правильное — использовать x64-версию файлового менеджера (вроде как заявлена на сайте).

На скриншоте в плагине Registry Browser файлового менеджера Far Manager показано содержимое обеих подразделов реестра:
Скрытый текст

На панели слева — как выглядит раздел «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer» для x64-приложения, на панели справа — что видят в том же разделе при перенаправлении x86-приложения.

mrFduch 17-05-2016 09:26 2635329

Спасибо, я с ограничением на доступ к реестру конечно заблуждался!
После Вашего вопроса начал думать примерно в том же направлении.

Но т.к. меня интересует получение информации об установленных приложениях и не хочется привязываться к разрядности сервера 1С на котором будет выполняться код, буду брать информацию из ветки реестра "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall".
Протестирую только, доступна ли она для x64 сервера приложений.

За ссылки благодарю, с утра подходящее время для небольшого саморазвития!


Время: 23:03.

Время: 23:03.
© OSzone.net 2001-