1

Я пытаюсь импортировать файл .reg из оболочки Cygwin, используя

regedit.exe <registryfile>.reg

Появляются диалоговые окна с вопросом, хочу ли я применить изменения в реестре, и я нажимаю «да», но никаких изменений не происходит. Если я запускаю точно такую же команду через командную строку или дважды щелкаю по файлу .reg, изменения применяются правильно. Что в Cygwin мешает работе regedit, и как я могу изменить реестр в Cygwin?

Я узнал, что мои изменения были применены, но где-то в другом файле. Когда я просто вызываю regedit из Cygwin, я получаю кучу разных ключей, чем я ожидал (например, все ключи MSSQL отсутствуют, но есть много других ключей)... Почему Cygwin открывает другой файл?

2 ответа2

2

Части этого ответа предполагают, что вы используете 64-разрядную версию Windows.

В Windows имеется несколько перенаправлений реестра, из-за которых они выглядят по-разному в зависимости от среды, в которой вы их просматриваете. Наиболее заметными являются HKEY_CURRENT_USER , который загружается в зависимости от используемого профиля пользователя, и перенаправление для 32-разрядных процессов - примером является ключ Wow6432Node разделе SOFTWARE , то есть то, что 32-разрядные приложения видят, когда ищут ключ SOFTWARE ,

Скорее всего, ваш процесс Cygwin фактически выполняется под другим пользователем и поэтому запускает regedit под этим пользователем. В противном случае это может произойти из-за работы в 32-битном режиме - я не могу точно сказать, не зная, на какие конкретные ключи вы нацелены. Могут также быть другие перенаправления, о которых я не знаю.

Дополнительную информацию о перенаправлении реестра для 32-разрядных (WOW64) см. Здесь.

Там в списке переадресованных ключей здесь.

Для программистов есть флаги, которые вы можете использовать для доступа к определенной версии реестра. Для остальных из нас, запустите соответствующую версию Regedit - по крайней мере, в Windows 7 и 8, %SystemRoot%\regedit.exe всегда является 64-разрядной версией, а %SystemRoot%\SysWOW64\regedit.exe всегда 32- битовая версия.

0

Чтобы импортировать файл с именем /tmp/file.reg в реестр с помощью Cygwin bash, попробуйте:

reg=/tmp/file.reg
unix2dos $reg
cmd /c "%SystemRoot%\regedit.exe \s `cygpath -w $reg`"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .