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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   [решено] Импорт твиков реестра - экспериментальный подход. (http://forum.oszone.net/showthread.php?t=122150)

Андрамедон 06-11-2008 15:26 944985

Импорт твиков реестра - экспериментальный подход.
 
Итак, имею два файла: HKCU.reg и HKLM.reg. Это нужные мне твики реестра, которые надо импортировать во время автоматической установки Windows. OEM папки я не использую, соответственно будет использоваться метод svcpack.inf. По правилам, которые я считаю истиной в последней инстанции, твики из HKCU.reg должны импортироваться до первого входа в систему (на Т-13), а твики из HKLM.reg - при первом входе в систему, то есть из RunOnceEx. В статьях, которые я прочитал на oszone.net, предлагалось использовать для этих целей .CMD файлы, которые отрабатывают на Т-13, внося все данные в реестр. А вот какая идея родилась у меня. Берем HKCU.reg и в начало (или в конец) добавляем строки:

Код:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\666]
"RunTweaksHKLM"="REGEDIT /S %systemdrive%\\HKLM.reg"

Далее файлы HKCU.reg и HKLM.reg упаковываем в SFX архив от архиватора RAR, обзываем его, например, MyTweaks.exe, в настройках SFX архива устанавливаем: "Путь для распаковки" - %systemdrive%, "Выполнить после распаковки" - REGEDIT /S %systemdrive%\HKCU.reg, "Режим вывода информации" - Скрыть всё. После этого прицепляем MyTweaks.exe в качестве аддона к UpdatePack. Теперь, по логике вещей, должно произойти следующее: во время установки Windows на Т-13 запускается MyTweaks.exe, он распаковывает HKCU.reg и HKLM.reg в %systemdrive% (у большинства это диск "С") и после распаковки выполняет команду REGEDIT /S %systemdrive%\HKCU.reg, которая просто вносит информацию в реестр из HKCU.reg (в том числе и нужные записи для RunOnceEx), а при первом входе в систему отрабатывается команда из RunOnceEx - REGEDIT /S %systemdrive%\HKLM.reg, которая вносит информацию в реестр из HKLM.reg.

Заметьте, здесь не используется никаких .CMD файлов.
Собственно, главный вопрос - прокатит ли такой способ? Возможно, я в чем-то ошибся, буду рад выслушать вашу критику, дополнения.

Vadikan 06-11-2008 17:21 945119

Цитата:

Цитата Андрамедон
"RunTweaksHKLM"="REGEDIT /S %systemdrive%\\HKLM.reg" »

Это не сработает, потому что для работы переменных нужен параметр REG_EXPAND_SZ, а у вас REG_SZ. Поэтому в RunOnceEx и используется командный файл - переменная считывается в момент импорта, а в реестр уже импортируется ее значение.

Цитата:

Цитата Андрамедон
Заметьте, здесь не используется никаких .CMD файлов. »

Зато используете SFX и аддон. Не очень понятно, в чем выгода такого подхода...

Андрамедон 06-11-2008 20:23 945270

Vadikan, в статье "Использование файла svcpack.inf для установки программ и импорта твиков реестра" есть такой код для .CMD:
Код:

@echo off
:: Укажите путь к папке, в которой находится исполняемый файл, относительно корня компакт-диска
SET folder=install
:: Определяем букву компакт-диска
FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\WIN51 SET CDROM=%%d:
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\999 /V 1 /D "%CDROM%\%folder%\file.exe" /f

Я его переделал так:
Код:

@echo off
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\666 /V RunTweaksHKLM /D "REGEDIT /S %systemdrive%\HKLM.reg" /f

и запустил из под винды, потом запустил regedit и увидел, что в RunOnceEx добавилась переменная типа REG_SZ (во всяком случае именно так показал regedit) RunTweaksHKLM = REGEDIT /S C:\HKLM.reg, могу дать скриншот.
Може я что-то не так понял? Объясни, тем более в статье RunOnceEx есть скриншот, где ясно видно, что в RunOnceEx добавляются переменные типа REG_SZ :dont-know

Vadikan 06-11-2008 20:36 945282

Цитата:

Цитата Андрамедон
тем более в статье RunOnceEx есть скриншот, где ясно видно, что в RunOnceEx добавляются переменные типа REG_SZ »

Туда добавляются параметры типа REG_SZ - на скриншоте видно, что в значении параметров нет переменных. Они обрабатываются при запуске командного файла, а в реестр вносится возвращаемое значение переменной. В общем, я просто перефразировал предыдущее сообщение.

Андрамедон 07-11-2008 13:30 945851

Цитата:

Цитата Vadikan
на скриншоте видно, что в значении параметров нет переменных. »

Ах, да, понял теперь о чем разговор, ступил малость :) , ведь переменная %systemdrive% будет непонятна Regedit'у. Написал вот так:

Код:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\666]
"RunTweaksHKLM"="REGEDIT /S C:\\HKLM.reg"

Реально работает, правда, теряется универсальность - диска "C" может и не быть (хотя это и мало вероятно, я всегда ставлю систему на диск "C", он у меня есть всегда).

Цитата:

Цитата Vadikan
Зато используете SFX и аддон. Не очень понятно, в чем выгода такого подхода... »

Дело даже не в выгоде, а просто в альтернативе, хотя лично мне намного проще и понятнее потыкать на кнопки и переключатели в настройках SFX, а потом прилепить его к UpdatePack'у, чем долбить по клаве сочиняя .CMD, в которых я не особо секу, а потом прописывать их в svcpack.inf... Ну ленивый я человек, любящий всем сердцем GUI :)

Vadikan 07-11-2008 20:11 946257

Цитата:

Цитата Андрамедон
Реально работает, правда, теряется универсальность - диска "C" может и не быть »

О чем и речь. Статьи же написаны для общего случая, а не для конкретного.
Цитата:

Цитата Андрамедон
чем долбить по клаве сочиняя .CMD, в которых я не особо секу »

Пример есть в статье, достаточно адаптировать его под свой случай.
Цитата:

Цитата Андрамедон
а потом прописывать их в svcpack.inf... »

Ну да, название файла прописать - это огромный труд :)

В общем, работет, вас устраивает - чудесно!


Время: 02:52.

Время: 02:52.
© OSzone.net 2001-