Невозможно увидеть определенные записи HKEY_LOCAL_MACHINE в RegEdit - PullRequest
8 голосов
/ 21 ноября 2011

Я использую HKEY_LOCAL_MACHINE, чтобы установить переменную во время установки. Они должны быть видны всем пользователям на машине и читаются только ими.

Я использую Inno для создания записи. Он работает от имени администратора, поэтому у него должны быть соответствующие права, чтобы виртуализация не сработала ... или я неправильно понял?

Мое приложение может прочитать запись (даже как пользователь с ограниченными правами в Win7), НО я не вижу их в RegEdit или RegEditX 3.0. Я МОГУ видеть их в RegEditX 2.0, хотя. Weird.

Я не понимаю, почему мое приложение Delphi может видеть запись, а программы RegEdit выше не могут.

Я полагаю, что это может быть связано с виртуализацией (первый ответ здесь: Невозможно прочитать данные конфигурации из HKEY_LOCAL_MACHINE в Vista ).

Но я даже не вижу соответствующей записи реестра в разделе HKCU \ Software \ Classes \ VirtualStore \ MACHINE \ SOFTWARE.

HKEY_LOCAL_MACHINE настолько устарел, что мне следует полностью избегать его? Как теперь разработчик должен сохранять данные для всех пользователей - просто в {commomappdata}, обычно это C: \ Program Data ... ??

1 Ответ

24 голосов
/ 21 ноября 2011

64-битные версии Windows эмулируют 32-битную функциональность через подсистему «Windows on Windows» (WoW). В случае реестра они переносят 32-битные ключи в специальный подраздел по соображениям совместимости.

Ключи будут в: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node.

Это аналог реестра перенаправителя файловой системы, который сопоставляет system32 с SysWOW64.

Более подробную информацию можно найти в разделе MSDN о перенаправителе реестра .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...