У меня проблемы с пониманием виртуализации операций реестра в VirtualStore в Vista и / или Windows 7. Я подумал, что попытка записать что-либо в корень HKEY_LOCAL_MACHINE при работе от имени обычного пользователя вынудит Windows виртуализировать операциюи вместо этого напишите HKEY_CURRENT_USER / Classes / VirtualStore / MACHINE .Я видел несколько старых приложений, которые ведут себя именно так.
Однако, при попытке воспроизвести это поведение в C # и .Net4, операция записи в HKLM просто завершается с ошибкой UnauthorizedAccessException .Есть ли какой-нибудь способ форсировать виртуализацию?
Чтобы дать некоторый контекст вопросу: я пытаюсь читать и манипулировать ключами реестра, изначально созданными другим унаследованным приложением.В Vista или Windows 7 они будут расположены в VirtualStore.Я хотел бы использовать одну и ту же логику доступа к реестру для WinXP и выше и думал, что мои операции с реестром будут виртуализированы точно так же, как операции из старого приложения (и из-за этого будут работать с теми же ключами).Это не работает должным образом, и единственный обходной путь, который я знаю, - это конкретный доступ к пути к VirtualStore, , если пользователь работает под управлением Vista или 7 и имеет UAC с включенным ... кажется уродливым, особенно если Microsoftрешает изменить поведение виртуализации в будущих версиях Windows.