Добавление ключа реестра в C # показывает, когда я читаю его обратно, но не в regedit - PullRequest
6 голосов
/ 09 октября 2009

Я добавляю раздел реестра, используя следующий код:

var key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(key);

В моем коде я могу прочитать значение поиска, даже между прогонами. Однако ключ никогда не отображается в regedit, и другая программа, которая должна читать ключ, не может его увидеть.

Программа работает в Vista с повышенными привилегиями.

Ответы [ 5 ]

16 голосов
/ 09 октября 2009

Vista представила виртуализация реестра ; «глобальные» изменения реестра, в некоторых случаях, перенаправляются в определенные пользователем местоположения:

Виртуализация реестра является технология совместимости приложений что позволяет операции записи в реестр которые имеют глобальное влияние, чтобы быть перенаправлены на места пользователя. это перенаправление прозрачно для чтение или запись приложений в реестр. Поддерживается начиная с Windows Vista.

Эта форма виртуализации является совместимость временного приложения технология; Microsoft намерена удалить его из будущих версий Операционная система Windows как больше приложения сделаны совместимыми с Виндоус виста. Следовательно, это важно, чтобы ваше приложение не становиться зависимым от поведения виртуализации реестра в система.

Вы можете отключить это, настроив манифест приложения , или вы можете изменить политику только для клавиши, к которой вы прикоснулись.

WOW64 (у вас установлена ​​64-разрядная версия Vista?) также выполняет перенаправление реестра . Это меня укусило раздражающими способами.

См. Статью MSDN о виртуализации реестра .

3 голосов
/ 09 октября 2009

Это звучит как проблема виртуализации реестра . Если пользователь вашего приложения не является администратором, то запись реестра будет виртуализирована в виртуальное хранилище для каждого пользователя - хотя, если ваша другая программа работает под той же учетной записью, она все равно должна видеть этого пользователя установка ...

На связанной странице указано, где найти виртуальный магазин, чтобы проверить эту теорию.

0 голосов
/ 09 октября 2009

Мне кажется, что даже если вы думаете, вы работаете с повышенными привилегиями, это не так - и что доступ к реестру ваших программ тихо перенаправляется в безопасное место.

Проверьте Виртуализация реестра для получения подробной информации.

0 голосов
/ 09 октября 2009

У вас могут не быть те привилегии, которые вы считаете нужными. При включенном контроле учетных записей ОС создаст виртуальный реестр для записи, если у вас недостаточно прав для записи в «настоящий» реестр (то же самое относится и к файловой системе.)

0 голосов
/ 09 октября 2009

Можете ли вы сказать, какой улей вы смотрите в реестре? Мое первое предположение было бы, что вы можете случайно искать не в том месте.

...