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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   Твики реестра через [GuiRunOnce] -> RunOnceEx (http://forum.oszone.net/showthread.php?t=83423)

SPV82 02-05-2007 09:26 582011

Твики реестра через [GuiRunOnce] -> RunOnceEx
 
Задача: затвикать реестр reg-файлами после установки XP SP2, которые находятся на дискете вместе c winnt.sif.
Но ничего не выходит, хотя cmdcons.cmd и bootcfg отрабатывают успешно. В чем может быть загвоздка?

winnt.sif
Код:

[GuiRunOnce]
"A:\RunOnceEx.cmd"

RunOnceEx.cmd
Код:

@ECHO OFF

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100

REG ADD %KEY% /V TITLE /D "Installing Applications" /f

REG ADD %KEY%\%i% /VE /D "Установка Recovery Console" /f
REG ADD %KEY%\%i% /V 1 /D "A:\cmdcons.cmd" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Отображать список ОС, сек" /f
REG ADD %KEY%\%i% /V 1 /D "bootcfg.exe /timeout 5" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Импорт настроек реестра" /f
REG ADD %KEY%\%i% /V 1 /D "A:\hklm_xpprof_sp2.cmd" /f
REG ADD %KEY%\%i% /V 1 /D "A:\hkcu_xpprof_sp2.cmd" /f
REG ADD %KEY%\%i% /V 1 /D "A:\hku_xpprof_sp2.cmd" /f
SET /A i+=1

hkcu_xpprof_sp2.cmd
Код:

@echo off
title Импорт настроек HKCU

if exist hkcu_xpprof_sp2.reg regedit /s hkcu_xpprof_sp2.reg

hklm_xpprof_sp2.cmd
Код:

@echo off
title Импорт настроек HKLM

if exist hklm_xpprof_sp2.reg regedit /s hklm_xpprof_sp2.reg

hku_xpprof_sp2.cmd
Код:

@echo off
title Импорт настроек Default User

if not exist hku_xpprof_sp2.reg goto :EOF
reg load HKU\DefUser "%ALLUSERSPROFILE%\..\Default User\NTUSER.DAT"
if %errorlevel% EQU 0 (
  regedit /s hku_xpprof_sp2.reg
  reg unload HKU\DefUser
  if %errorlevel% NEQ 0 (
      echo Ошибка при выгрузке файла куста реестра!
      pause >nul
      goto :EOF
  )
) else (
  echo Ошибка при загрузке файла куста реестра!
  pause >nul
)


qeraser 02-05-2007 10:20 582020

SPV82
Код:

REG ADD %KEY%\%i% /V 1 /D "A:\hklm_xpprof_sp2.cmd" /f
REG ADD %KEY%\%i% /V 1 /D "A:\hkcu_xpprof_sp2.cmd" /f
REG ADD %KEY%\%i% /V 1 /D "A:\hku_xpprof_sp2.cmd" /f

Должно быть вот так
Код:

REG ADD %KEY%\%i% /V 1 /D "A:\hklm_xpprof_sp2.cmd" /f
REG ADD %KEY%\%i% /V 2 /D "A:\hkcu_xpprof_sp2.cmd" /f
REG ADD %KEY%\%i% /V 3 /D "A:\hku_xpprof_sp2.cmd" /f


SPV82 02-05-2007 13:51 582123

qeraser
Исправил неточность, но все равно импорта не происходит ни в одну из ветвей. Батники, вызываемые до и после в RunOnceEx отрабатывают успешно, а которые с реестром - нет

Прописал абслютные пути в *.cmd - заработало. Странно.
if exist A:\hkcu_xpprof_sp2.reg regedit /s A:\hkcu_xpprof_sp2.reg

Vadikan 02-05-2007 18:20 582245

SPV82
Зачем так сложно? Не проще ли с дискеты установить на Т-12 из cmdlines.txt? И вообще, почему вы из GuiRunOnce вызываете RunOnceEx? Это же дублирующие друг друга функции. Просто пропишите свои батники в GuiRunOnce. И в твиках все пути к разделам реестра должны быть другие - там же HKU\Defuser...

SPV82 03-05-2007 08:34 582421

Vadikan
Цитата:

Не проще ли с дискеты установить на Т-12 из cmdlines.txt?
cmdlines.txt использовать не могу, т.к. системы устанавливаются с легальных ОЕМ-дистрибутивов в разных точках и времени на пересобирание образа c внедрением $OEM$ и т.д. тратить жалко, в этом случае проще заранее иметь дискету с winnt.sif и кучкой reg-файлов для HKLM, HKCU и Default User.
Цитата:

почему вы из GuiRunOnce вызываете RunOnceEx?
Чтобы выполнилось не после 1го входа в систему, а после 2го.
Цитата:

И в твиках все пути к разделам реестра должны быть другие - там же HKU\Defuser...
Разумеется, так оно и есть.
Проблема разрешилась - нужно было указать в батниках абсолютные пути до reg-файлов. Правда я так пока и не понял зачем полные пути, ведь батники запускаются из того же каталога, где лежат reg-файлы.

Petya V4sechkin 03-05-2007 12:09 582508

SPV82
Цитата:

cmdlines.txt использовать не могу, т.к. системы устанавливаются с легальных ОЕМ-дистрибутивов в разных точках и времени на пересобирание образа c внедрением $OEM$ и т.д. тратить жалко, в этом случае проще заранее иметь дискету с winnt.sif и кучкой reg-файлов для HKLM, HKCU и Default User.
Есть еще одна возможность выполнять cmd-файлы до первого логона (на T-9), параметр UserExecute:
Код:

[SetupParams]
UserExecute="A:\hkcu_xpprof_sp2.cmd"

Цитата:

Правда я так пока и не понял зачем полные пути, ведь батники запускаются из того же каталога, где лежат reg-файлы.
Но текущая папка вовсе не обязательно та же, откуда они запускаются.
Это можно поправить, вставив в начало cmd-файлов строчку:
Код:

CD /D "%~dp0"
(только надо иметь в виду, что с сетевыми путями команда CD не работает).

SPV82 03-05-2007 20:58 582730

Цитата:

Есть еще одна возможность выполнять cmd-файлы до первого логона (на T-9), параметр UserExecute:
Попробовал через параметр UserExecute. Проблема - выполняется только cmdcons.cmd из T-9.cmd. Остальное не выполняется. В чем грабли? Не могу понять где я ступил, два раза пробовал, пол вечера убил...
winnt.sif
Код:

[SetupParams]
UserExecute = "A:\T-9.cmd"

T-9.cmd
Код:

@echo off

A:\cmdcons.cmd
bootcfg /timeout 5
regedit /s A:\hkcu_xpprof_sp2.reg
A:\RunOnceEx.cmd

RunOnceEx.cmd
Код:

@ECHO OFF

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100

REG ADD %KEY% /V TITLE /D "Configuring system" /f

REG ADD %KEY%\%i% /VE /D "Импорт настроек реестра" /f
REG ADD %KEY%\%i% /V 1 /D "A:\hklm_xpprof_sp2.cmd" /f
SET /A i+=1


Petya V4sechkin 03-05-2007 21:28 582744

SPV82
Вы забыли привести содержимое cmdcons.cmd ;)
Если в конце Exit - удалите. Также попробуйте вызов с помощью Call:

T-9.cmd
Код:

@echo off

call A:\cmdcons.cmd
bootcfg /timeout 5
regedit /s A:\hkcu_xpprof_sp2.reg
call A:\RunOnceEx.cmd

exit


Vadikan 03-05-2007 23:50 582788

Почему бы все команды не собрать в один файл?

SPV 04-05-2007 15:23 583041

Цитата:

Вы забыли привести содержимое cmdcons.cmd ;)
Код:

@echo off
title Установка консоли восстановления Windows

for %%i in (c,d,e,f,g,q,w,r,t,y,u,i,o,p,s,h,j,k,l,z,x,v,n,m) do (
if exist %%i:\win51*.SP? %%i:\I386\winnt32.exe /cmdcons /unattend
)

Цитата:

Также попробуйте вызов с помощью Call
Попробовал, уже лучше - bootcfg и RunOnceEx отработали, но HKCU не отрабатывает даже вот так:
T-9.cmd
Код:

@echo off

call A:\cmdcons.cmd
bootcfg /timeout 5
call A:\hkcu_xpprof_sp2.cmd
call A:\RunOnceEx.cmd

exit

hkcu_xpprof_sp2.cmd
Код:

@echo off
title Импорт настроек HKCU

cd /D "%~dp0"
if exist hkcu_xpprof_sp2.reg regedit /s hkcu_xpprof_sp2.reg

Вот что происходит визуально как при "regedit /s A:\hkcu_xpprof_sp2.reg", так и при "call A:\hkcu_xpprof_sp2.cmd" в T-9.cmd



Расшифровать с графики не знаю как и не понимаю причем тут boot.ini. Неужели на T-9 экспорт в HKCU невозможен? Или опять я туплю...

Petya V4sechkin 04-05-2007 15:47 583056

SPV
SPV82
У вас новый логин?

Может, вместо:
Код:

regedit /s A:\hkcu_xpprof_sp2.reg
сделать так:
Код:

start /wait regedit /s A:\hkcu_xpprof_sp2.reg

SPV82 04-05-2007 16:35 583089

Цитата:

У вас новый логин?
Это старый. Сохранился в кукисах для oszone.net. И что-то не понял как этот логин с форума удалить, в настройках профиля не нашел. Может, плохо искал?
Цитата:

сделать так:
Код:
start /wait regedit /s A:\hkcu_xpprof_sp2.reg
Может так будет лучше?
Код:

%comspec% /c start /wait regedit

SPV82 04-05-2007 19:25 583157

Итак...
Пробовал через "start /wait regedit /s A:\hkcu_xpprof_sp2.reg". Не помогло. С "%comspec% /c" тоже.
Пробовал вынести все операции в единый пакетный файл. Не помогло.

Есть у кого-нибудь еще мысли по поводу настройки HKCU с дискеты на этапе Т-9 через UserExecute? Или на Т-12 с дискеты?

Иначе получается, что на данный момент единственный рабочий способ обработки веток реестра HKCU и Default user с дискеты это способ, описанный мной в самом первом сообщении этой темы, т.е. через RunOnceEx. Разубедите меня.

Vadikan 04-05-2007 21:16 583192

SPV82
Думаю, что если бы в добавили OEM папки сразу, то все уже бы давно работало. Понимаете, у каждой задачи есть рекомендуемые пути решения, а есть перректальные. Вы выбрали второй вариант, а разубеждать вас тут никто не будет...

SPV82 05-05-2007 18:01 583462

Vadikan
Цитата:

Думаю, что если бы в добавили OEM папки сразу, то все уже бы давно работало
Дело в том, что при помощи $ОЕМ$-директорий и cmdlines.txt, размещенных на дискете вообще ничего не срабатывает. Этот вариант я неоднократно пробовал перед созданием данного топика и в дальнейшем пришел к решению через RunOnceEx, с которым сюда и пожаловал.
И вот даже сейчас, прочитав ваш ответ, решил повторить попытку через $ОЕМ$ и cmdlines.txt с дискеты. Но безрезальтатно. На T-12 ничего не происходит.
Код:

A:\
│  winnt.sif

└───$OEM$
    │  cleanup.cmd
    │  cmdcons.cmd
    │  cmdlines.txt
    │  hkcu.reg
    │  hklm.reg
    │  RunOnceEx.cmd
    │  UserAccounts.cmd
    │
    └───$1
            SourcePath_SP.vbs
            SourcePath_WIN.vbs

A:\winnt.sif
Пробовал также с "OemFilesPath=A:\" и "OemFilesPath=A:\$OEM$" в секции [Unattended]
Код:

;SetupMgrTag
[Data]
    AutoPartition=0
    MsDosInitiated="0"
    UnattendedInstall="Yes"
    AutomaticUpdates=Yes

[Unattended]
    UnattendMode=FullUnattended
    OemSkipEula=Yes
    OemPreinstall=Yes
    TargetPath=\WINDOWS
    UnattendSwitch="Yes"
    WaitForReboot="No"

[GuiUnattended]
    AdminPassword="ххх"
    EncryptedAdminPassword=NO
    AutoLogon=Yes
    AutoLogonCount=1
    OEMSkipRegional=1
    TimeZone=180
    OemSkipWelcome=1

[UserData]
    ProductKey=ххххх-ххххх-ххххх-ххххх-ххххх
    FullName="*"
    OrgName=""
    ComputerName=NONAME

[TapiLocation]
    CountryCode=7
    AreaCode=3522

[RegionalSettings]
    LanguageGroup=5
    SystemLocale=00000419
    UserLocale=00000419
    InputLocale=0419:00000419

[Branding]
    BrandIEUsingUnattended=Yes

[url]
    Home_Page=about:blank

[Proxy]
    Proxy_Enable=0
    Use_Same_Proxy=1

[Identification]
    JoinWorkgroup=WORKGROUP

[Networking]
    InstallDefaultComponents=Yes

[Components]
    msmsgs=Off
    msnexplr=Off
    zonegames=Off
    templates=Off
    deskpaper=Off
    dialer=Off
    mousepoint=Off
    media_clips=Off
    rec=Off
    clipbook=Off
    WMPOCM=Off

[Shell]
    DefaultStartPanelOff = Yes
    DefaultThemesOff = Yes

[WindowsFirewall]
    Profiles=WindowsFirewall.TurnOffFirewall

[WindowsFirewall.TurnOffFirewall]
    Mode=0

A:\$OEM$\cmdlines.txt
Код:

[COMMANDS]
"cmdcons.cmd"
"regedit /s hkcu.reg"
"bootcfg /timeout 5"
"UserAccounts.cmd"
"RunOnceEx.cmd"

A:\$OEM$\RunOnceEx.cmd
Код:

@ECHO OFF

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100
SET PATH2OEM=A:\$OEM$

REG ADD %KEY% /V TITLE /D "Installing Applications" /f

REG ADD %KEY%\%i% /VE /D "Import registry keys" /f
REG ADD %KEY%\%i% /V 1 /D "regedit /s %PATH2OEM%\hklm.reg" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Cleaning up and reboot..." /f
REG ADD %KEY%\%i% /V 1 /D "%PATH2OEM%\cleanup.cmd" /f
SET /A i+=1

EXIT


Petya V4sechkin 05-05-2007 18:31 583468

SPV82
Скажите еще раз, пожалуйста, почему не хотите добавить папку $OEM$ на CD?
Мне просто любопытно.

SPV82 05-05-2007 18:40 583473

Petya V4sechkin
Не могу, т.к. дистрибутивы винды - легальные ОЕМ'ки. Я прихожу к клиенту и устанавливаю систему с CD клиента, быстрой возможности пересобрать дистрибутив с внедрением $OEM$ и записью на болванку прямо на месте я не нахожу... Таким образом, выход один - иметь дискету с winnt.sif с кучкой cmd и reg файлов для автоустановки и настройки системы как и было поведано мной в первом сообщении.

ps Есть еще в теории вариант установки с жесткого диска, но вот на практике $OEM$-папки и cmdlines.txt на жестком диске у меня тоже не обрабатывались.

Petya V4sechkin 05-05-2007 18:56 583477

SPV82
Цитата:

дистрибутивы винды - легальные ОЕМ'ки
В принципе, от добавления папки $OEM$ дистрибутив не перестанет быть легальным / лицензионным.

Цитата:

Я прихожу к клиенту и устанавливаю систему с CD клиента
То есть, это какие-то специфические клиенты? Они опасаются "закладок" или чего-то еще? :)

Vadikan 05-05-2007 19:23 583486

Цитата:

В принципе, от добавления папки $OEM$ дистрибутив не перестанет быть легальным / лицензионным.
Конечно.

Ладно, в общем делайте так. Просто с жесткого диска или дискеты запускайте один сценарий, который импортирует твики во все профили, и второй сценарий, который импортирует эти же твики в текущий профиль (обычный regedit /s). Все.

SPV82 05-05-2007 19:54 583496

Petya V4sechkin
Цитата:

В принципе, от добавления папки $OEM$ дистрибутив не перестанет быть легальным / лицензионным.
Для этого как минимум нужен ноутбук с СD-RW-приводом и некоторое количество времени на интеграцию.
Не проще ли иметь в кармане обычную дискету?
Vadikan
Цитата:

Просто с жесткого диска или дискеты запускайте один сценарий, который импортирует твики во все профили
Спасибо за скрипт, пригодится. У меня просто reg load в Default User\ntuser.dat как в первом сообщении описывал.
А для исключения обработки файла реестра текущего пользователя достаточно добавить еще одно условие:
Код:

for /f "usebackq tokens=1,1* delims==" %%i in (`dir /b "%profiles%"`) do (
if /i "%%i" neq "All Users" (
  if /i "%%i" neq %USERNAME% (
      reg load HKU\custom "%profiles%\%%i\NTUSER.DAT"
      regedit /s tweak.reg       
      reg unload HKU\custom
      )
)
)

Это если не было переименования учетной записи.
Еще есть такая утилитка Modify Profile
Цитата:

Modify Profile [version 1.21]


Loads Registry hives and modifies profiles for users who are not currently
logged in
. Can also be used to modify new user profiles (Default User).

Syntax: ModifyProfile.exe /PROFILE:profilename|ALL /REG:filename /KEYNAME:name


Examples:

ModifyProfile.exe /PROFILE:ALL /REG:"C:\TEMP\New Stuff.reg" /KEYNAME:TempHive

ModifyProfile.exe /PROFILE:"C:\Documents and Settings\Default User\NTUser.dat" /
REG:C:\TEMP\NewStuff.reg /KEYNAME:TempHive


Время: 14:40.

Время: 14:40.
© OSzone.net 2001-