Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » (solved) RunOnceEx и WHS

Ответить
Настройки темы
(solved) RunOnceEx и WHS

Пользователь


Сообщения: 73
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 19-12-2005
Добрай всем день. Возможно то, о чем я спрошу, уже обсуждалось на форуме, однако я этого, к сожалению, не нашел.

Делаю unattended установку WindowsXP с использованием RunOnceEx. Но CMD формат меня не устраивает в силу того, что мне надо взять значение из HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Programs и подставить его в HKCU\Environment\COMMONPROGRAMSLNK. Все мои эксперементы с REG COPY закончились ничем в силу того, что я не понял как скопировать ExpandedStringValue из одного ключа реестра в другой. соотвественно в исходнике этот ExpandedStringValue называется Common Programs, а в приемнике COMMONPROGRAMSLNK.
Попробовал JS и VBS, но они в момент установки винды не срабатывали.

Кто что может подсказать на этот предмет?

PS: в RunOnceEx.CMD указать при запуске выполнить VBS скрипт - не прокатит, потому как переопределяются макропеременные, а видны они станут только при следующем логоне.

PPS: как в VBS реализовано вот такое сочетание символов: \"
Тупая подстановка ничего не дает кроме ошибок.
Решение

Отправлено: 17:05, 14-12-2005

 

(*.*)


Сообщения: 36498
Благодарности: 6677

Профиль | Сайт | Отправить PM | Цитировать


UnDetect
Это видимо вы мне задавали вопрос по эл. почте, забыв упомянуть, что тема уже создана...

Непонятен следующий моемнт.
Цитата:
Но CMD формат меня не устраивает в силу того, что мне надо взять значение из HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Programs и подставить его в HKCU\Environment\COMMONPROGRAMSLNK.
Что значит надо взять значение? Вы же его можете самостоятельно сформировать импортировав в реестр из cmdlines.txt. Иными словами, вы сами выставляете нужное значение, а раз оно уже известно, то его можно использовать на других этапах. Поясните вопрос.

Если же нужно узнать какое значение находится в определенном ключе реестра, то можно использовать команду FOR в сочетании с REG QUERY. Вот, например, фрагмент из HotFixes Installer VseDoFeni, в котором он определяет установлена ли XP и установлен ли на нее SP2
Код: Выделить весь код
FOR /F "usebackq tokens=* delims==" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion`) do set CV=%%i
IF %CV:~-3%==5.1 FOR /F "usebackq skip=4 tokens=4*" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion`) do set CSDV=%%j

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 01:32, 15-12-2005 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Moderator


Сообщения: 53209
Благодарности: 15443

Профиль | Отправить PM | Цитировать


UnDetect
Цитата:
в RunOnceEx.CMD указать при запуске выполнить VBS скрипт - не прокатит, потому как переопределяются макропеременные, а видны они станут только при следующем логоне.
тут я не совсем понял, если можно - поподробнее.
при следующем логоне - это при втором логоне? или при первом?

Отправлено: 10:16, 15-12-2005 | #3


Пользователь


Сообщения: 73
Благодарности: 0

Профиль | Отправить PM | Цитировать


Petya V4sechkin:
Цитата:
тут я не совсем понял, если можно - поподробнее.
при следующем логоне - это при втором логоне? или при первом?
То, на что наткнулся я: если мы запускаем VBS или JS скриптик с внесением записей в HKCU\Environment (то есть создаем макропеременные типа того же %Temp% и %Tmp%), то они становятся видны пользователю только при следующем логоне. Почему не в этом же - не знаю и ничего сказать не могу. Вот так вот это сделали мелкомягкие.

Отправлено: 14:45, 15-12-2005 | #4


Пользователь


Сообщения: 73
Благодарности: 0

Профиль | Отправить PM | Цитировать


Vadikan:
Цитата:
Непонятен следующий моемнт.
Цитата:
Цитата:
Но CMD формат меня не устраивает в силу того, что мне надо взять значение из HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Programs и подставить его в HKCU\Environment\COMMONPROGRAMSLNK.
Что значит надо взять значение? Вы же его можете самостоятельно сформировать импортировав в реестр из cmdlines.txt. Иными словами, вы сами выставляете нужное значение, а раз оно уже известно, то его можно использовать на других этапах. Поясните вопрос.
Фишка в том, что в этой строке хранится ссылка на %SYSTEMROOT%\Documents and Settings\All Users\Start Menu\Programs для английской винды и %SYSTEMROOT%\Documents and Settings\All Users\Главное Меню\Программы для русской, не говоря уж про другие языки. Если я перепишу это значение - потеряется ряд ярлыков.

По поводу REG QUERY - ну руки у меня кривые, не могу я подобрать подходящих ключиков. Либо "ERROR: More data is available.", либо "End of search: 0 match(es) found."

Отправлено: 15:48, 15-12-2005 | #5



Moderator


Сообщения: 53209
Благодарности: 15443

Профиль | Отправить PM | Цитировать


UnDetect
Цитата:
Попробовал JS и VBS, но они в момент установки винды не срабатывали.
в момент установки - это когда?
скажем, если в Cmdlines.txt вставить строчку "wscript.exe Myscript.vbs", неужели оно не сработает? Что-то не верится.

Далее, может, вместо "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Programs" использовать "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Programs"?

Если так уж хочется через батник, то пожалуйста:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions
 
ChCP 1251 >nul
For /F "UseBackQ Tokens=3 Delims=	" %%I In (`Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /V "Common Programs"`) Do Set V=%%I
Reg Add "HKCU\Environment" /V COMMONPROGRAMSLNK /D "%V%" /F >nul
ChCP 866 >nul
 
Exit
В Delims= символ табуляции.
Кодовые страницы приходится менять (иначе крякозябры будут в русской винде).

А если через VBS, то так:
Код: Выделить весь код
Dim Sh
Set Sh = WScript.CreateObject("WScript.Shell")
 
Sh.RegWrite "HKCU\Environment\COMMONPROGRAMSLNK", Sh.SpecialFolders("AllUsersPrograms")
Неужели не работает?

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210


Последний раз редактировалось Petya V4sechkin, 15-12-2005 в 18:58.


Отправлено: 18:38, 15-12-2005 | #6


Пользователь


Сообщения: 73
Благодарности: 0

Профиль | Отправить PM | Цитировать


проверяю вариан "wscript.exe Myscript.vbs"

Сервер сценариев Windows:
Цитата:
Сценарий: C:\$WIN_NT$.~LS\$OEM$\RunOnceEx.vbs
Строка: 26
Символ: 1
Ошибка: Критическая ошибка
Код: 8004100A
Источник: SWbemObjectEx
Ругается как раз на "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Programs". Буду копать дальше

"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Programs" не спасает

Последний раз редактировалось UnDetect, 15-12-2005 в 20:21.


Отправлено: 19:05, 15-12-2005 | #7



Moderator


Сообщения: 53209
Благодарности: 15443

Профиль | Отправить PM | Цитировать


Надо же..
Кстати, прошу прощения, там же REG_EXPAND_SZ
Ну вот тебе 6 вариантов, хоть один должен работать :)

Если на T-12 не пашут, придется после первого логона запускать. Дело в том, что на T-12 Explorer еще не запущен, поэтому многих записей в реестре попросту не существует.

1) батник:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions
 
ChCP 1251 >nul
For /F "UseBackQ Tokens=3 Delims=	" %%I In (`Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Common Programs"`) Do Set V=%%I
Reg Add "HKCU\Environment" /V COMMONPROGRAMSLNK /T REG_EXPAND_SZ /D "%V%" /F >nul
ChCP 866 >nul
 
Exit
2) батник:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions
 
ChCP 1251 >nul
For /F "UseBackQ Tokens=3 Delims=	" %%I In (`Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /V "Common Programs"`) Do Set V=%%I
Reg Add "HKCU\Environment" /V COMMONPROGRAMSLNK /T REG_EXPAND_SZ /D "%V%" /F >nul
ChCP 866 >nul
 
Exit
3) батник:
Код: Выделить весь код
@Echo Off
Reg Add "HKCU\Environment" /V COMMONPROGRAMSLNK /T REG_EXPAND_SZ /D "%ALLUSERSPROFILE%\Главное меню\Программы" /F >nul
Exit
4) батник:
Код: Выделить весь код
@Echo Off
Reg Add "HKCU\Environment" /V COMMONPROGRAMSLNK /T REG_EXPAND_SZ /D "%%ALLUSERSPROFILE%%\Главное меню\Программы" /F >nul
Exit
5) VBS:
Код: Выделить весь код
Dim Sh
Set Sh = WScript.CreateObject("WScript.Shell")
 
Sh.RegWrite "HKCU\Environment\COMMONPROGRAMSLNK", Sh.SpecialFolders("AllUsersPrograms"), "REG_EXPAND_SZ"
6) VBS:
Код: Выделить весь код
Dim Sh, Env
Set Sh = WScript.CreateObject("WScript.Shell")
Set Env = Sh.Environment("User")
 
Env("COMMONPROGRAMSLNK") = Sh.SpecialFolders("AllUsersPrograms")
Батники все для русской винды, если английская, то поменять соответственно..

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210


Последний раз редактировалось Petya V4sechkin, 15-12-2005 в 21:13.


Отправлено: 20:58, 15-12-2005 | #8


Пользователь


Сообщения: 73
Благодарности: 0

Профиль | Отправить PM | Цитировать


Батник не пробовал, а вот по VBS имеем следующее:
Цитата:
Сценарий: C:\$WIN_NT$.~LS\$OEM$\RunOnceEx.vbs
Строка: 26
Символ: 1
Ошибка: Объект не поддерживает это свойство или метод: `oReg.SpecialFolders("AllUsersPrograms")`
Код: 800A01B6
Источник: Ошибка выполнения Microsoft VBScript

Отправлено: 12:21, 16-12-2005 | #9



Moderator


Сообщения: 53209
Благодарности: 15443

Профиль | Отправить PM | Цитировать


UnDetect
Вообще-то варианты номер 3 и 4 должны работать по-любому, даже на T-12.
Если ты так любишь VBS, то вот еще парочка:

Код: Выделить весь код
Dim Sh
Set Sh = WScript.CreateObject("WScript.Shell")
 
Sh.RegWrite "HKCU\Environment\COMMONPROGRAMSLNK", "%ALLUSERSPROFILE%\Главное меню\Программы", "REG_EXPAND_SZ"
Код: Выделить весь код
Dim Sh, Env
Set Sh = WScript.CreateObject("WScript.Shell")
Set Env = Sh.Environment("User")
 
Env("COMMONPROGRAMSLNK") = "%ALLUSERSPROFILE%\Главное меню\Программы"
Второй вариант более правильный. Можно заменить Environment("User") на Environment("System"), тогда это будет системная переменная (живет по адресу HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment).
Для английской винды заменить "Главное меню\Программы" на "Start Menu\Programs".

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210


Отправлено: 09:26, 17-12-2005 | #10



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » (solved) RunOnceEx и WHS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
(solved) RunOnceEx - запуск autorun CD e9990638 Автоматическая установка Windows 2000/XP/2003 16 19-03-2006 12:57
(solved) RunOnceEx. Запускаются окна Проводника вместо установки приложений Stile Автоматическая установка Windows 2000/XP/2003 14 11-02-2006 23:25
VBS/WSH/JS - *VBS/WHS/JS* | Инсталлятор на VB DevilHaker Программирование и базы данных 1 27-01-2006 19:55
VBS/WSH/JS - *VBS/WHS/JS* | Серийный номер процессора, через WMI inul Программирование и базы данных 2 25-01-2006 15:51
(solved) Где ошибка в RUNONCEEX.CMD? Has17 Автоматическая установка Windows 2000/XP/2003 2 21-12-2005 20:09




 
Переход