|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] Добавление OEM информации - все вопросы |
|
[решено] Добавление OEM информации - все вопросы
|
Ветеран Сообщения: 1007 |
|
|
Отправлено: 16:47, 18-05-2005 |
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать Новый, основательно доработанный oeminfo.cmd - см. пост
|
------- Последний раз редактировалось Sanja Alone, 10-10-2006 в 04:08. Причина: перенос темы Отправлено: 02:15, 04-07-2006 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1417
|
Профиль | Отправить PM | Цитировать А я вот на днях слегка доработал Доработанный вариант файла oeminfo.cmd Sanja Alone
Надеюсь - не обидится ![]() Теперь его можно использовать не только при установке системы с CD/DVD но и с HDD, а также для обновления информации. @echo off rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ ---> rem Полный путь и имя файла oeminfo set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini rem Маркерный файл для определения cdrom-а set TAGFILE=WIN51 rem Полный путь к дистрибутиву при установке с HDD set HDDPATH=D:\WinXP\XP_HDD rem Производитель set MANUFACTURER=Автор версии: YuriPet rem Модель set MODEL=WinXP Pro SP2 Plus rem Кол-во апдейтов в одной строке set UPMAX=6 rem Присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу 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:\%TAGFILE% set CDROM=%%d: rem Маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.) set UPDATESMASK=KB*.* rem Каталог с апдейтами if not defined CDROM ( set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} ) else ( set UPDATESDIR=%CDROM%\I386\SVCPACK ) rem Если будем обновлять информацию - снимаем атрибуты файлов if %UPDATESDIR%==%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} ( ATTRIB -H -S -R %UPDATESDIR%\%UPDATESMASK% ) rem Обеспечение правильности отработки мультизагрузочного CD/DVD if exist %CDROM%\i386\winna.sif ( set WINNTSIF=%CDROM%\i386\winna.sif ) else ( if exist %CDROM%\i386\winnt.sif ( set WINNTSIF=%CDROM%\i386\winnt.sif ) ) rem Обеспечение обработки winnt.sif при установке с HDD if not defined WINNTSIF ( set WINNTSIF=%HDDPATH%\I386\winna.sif ) rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ ---> rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан rem Т.о. нет нужды его предварительно удалять echo [General]> "%OEMFILE%" echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%" echo Model=%MODEL%>> "%OEMFILE%" echo [Support Information]>> "%OEMFILE%" echo Line1=У вас установлена система Windows XP Professional Edition SP2>> "%OEMFILE%" echo Line2=с интегрированными пакетами обновлений программного>> "%OEMFILE%" echo Line3=обеспечения и системы защиты.>> "%OEMFILE%" echo Line4=>> "%OEMFILE%" rem Если существует winnt.sif (winna.sif), достаем из него серийный номер rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами) if exist %WINNTSIF% ( for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" %WINNTSIF%') do ( echo Line5=Ключ продукта: %%j>> "%OEMFILE%" echo Line6=>> "%OEMFILE%" ) echo Line7=На момент инсталляции системы - %date% %time:~0,-6%>> "%OEMFILE%" set i=7 ) rem Если WINNTSIF не существует (обновление информации) IF NOT EXIST %WINNTSIF% ( echo Line5=По состоянию на %date% %time:~0,-6%>> "%OEMFILE%" SET i=5 ) set /A i+=1 echo Line%i%=установлены следующие обновления (после SP2):>> "%OEMFILE%" set /A i+=1 echo Line%i%=>> "%OEMFILE%" set /A i+=1 rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Windows) for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "file(s)"`) do (set numfiles=%%m) if not defined numfiles ( for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "д*©«®ў"`) do (set numfiles=%%m) ) rem Вспомогательные переменные set l=0 set c=0 rem Список апдейтов (имена всех файлов без расширений) rem (без ключевого слова usebackq команда dir будет воспринята как rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения rem об отсутствии такого файла в текущем каталоге). for /F "usebackq tokens=1 delims=." %%j in (`dir /B %UPDATESDIR%\%UPDATESMASK%`) do ((set kbname=%%j) & (call :myprint)) rem Возвращаем аттрибут файлов if %UPDATESDIR%==%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} ( ATTRIB +S %UPDATESDIR%\%UPDATESMASK% ) rem Выход из этого пакетного файла. rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает rem передачу управления в конец текущего пакетного файла. Это позволяет легко rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto) goto :EOF :myprint if %c% == 0 ( set str=%kbname% ) else ( set str=%str% %kbname% ) set /A c+=1 if %c% == %UPMAX% ( echo Line%i%=%str%>> "%OEMFILE%" set /A i+=1 set /A l+=1 set str= set c=0 set /A tmp=numfiles-l*UPMAX ) else ( if %numfiles% LSS %UPMAX% ( if %c% == %numfiles% ( echo Line%i%=%str%>> "%OEMFILE%" ) ) if %tmp% LSS %UPMAX% ( if %c% == %tmp% ( echo Line%i%=%str%>> "%OEMFILE%" ) ) ) В этом пакетном файле используются символы кириллицы. Следовательно, для правильного её отображения в окне "Сведения о поддержке", сохранять файл необходимо в кодировке Windows (1251). Обратите внимание! В строке №81 слово "файлов" ("д ©«®ў") должно быть в кодировке DOS (866). |
------- Отправлено: 02:45, 08-09-2006 | #42 |
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать YuriPet
Цитата:
Цитата:
![]() P.S. А зачем понадобилось выбрасывать часть кода, отвечающую за видимость/скрытость серийника? Кое-кому это все же нужно. |
||
------- Отправлено: 03:33, 09-09-2006 | #43 |
Покинул форум Сообщения: 3254
|
YuriPet
Цитата:
|
|
Отправлено: 14:52, 09-09-2006 | #44 |
Ветеран Сообщения: 1417
|
Профиль | Отправить PM | Цитировать Sanja Alone
Цитата:
А "видимость/скрытость серийника" - ИМХО дело вкуса ![]() prokazzza Цитата:
![]() ![]() |
||
------- Отправлено: 23:57, 09-09-2006 | #45 |
Покинул форум Сообщения: 3254
|
YuriPet
не видит добавленных обновлений просто пустое место под надписью Цитата:
cmdow @ /HID @echo off SET D=%SYSTEMROOT%\system32\ copy oemlogo.bmp %d%oemlogo.bmp echo [General] > "%D%oeminfo.ini" echo Manufacturer=Windows SP2 >> "%D%oeminfo.ini" echo Model=Корпоративная Версия >> "%D%oeminfo.ini" echo [Support Information] >> "%D%oeminfo.ini" echo Line1=Дата установки системы : %date% >> "%D%oeminfo.ini" echo Line2= >> "%D%oeminfo.ini" echo Line3=Время установки системы : %time% >> "%D%oeminfo.ini" echo Line4= >> "%D%oeminfo.ini" echo Line5=Установленные обновления : >> "%D%oeminfo.ini" echo Line6= >> "%D%oeminfo.ini" SET i=7 ATTRIB -H -S -R %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\KB*.cat For /F "tokens=1* delims=." %%k in ('dir "%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\KB*.cat" /b') do ( (set kbname=%%k) & (call :myprint) ) GOTO :EOF :myprint echo Line%i%=%kbname% >> "%D%oeminfo.ini" SET /A i=%i%+1 :EOF |
|
Отправлено: 10:46, 10-09-2006 | #46 |
Ветеран Сообщения: 1417
|
Профиль | Отправить PM | Цитировать prokazzza
Цитата:
|
|
------- Отправлено: 11:49, 10-09-2006 | #47 |
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать Исправленный и дополненный oeminfo.cmd ВНИМНИЕ! Последняя версия oeminfo.cmd отныне находится здесь Собственно, это мой старый вариант, объединенный с методом "CatRoot", предложенным ANDYru более года назад в теме Добавление OEM информации и реализованным YuriPet-ом на базе доработанного мною первоначального варианта oeminfo.cmd c MSFN (вроде никого не забыл ![]() Что изменилось:
! Внимание ! Весь выделенный красным текст должен быть в кодировке ANSI (CP1251), синим - OEM (CP866), зеленым - не важно (это просто комментарии). Коричневым цветом я выделил те переменные, к-рые Вам захочется или понадобится (возможно) изменить. @echo off rem магические слова :) setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ ---> rem полный путь и имя файла oeminfo set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini rem маркерный файл для определения cdrom-а set TAGFILE=WIN51 rem производитель set MANUFACTURER=Sanja Alone rem модель set MODEL=Unattended XP DVD rem кол-во апдейтов в одной строке (по ум. 6) set UPMAX=6 rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет) set KEY=1 rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет) set KEYISVISIBLE=1 rem присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу rem (CDROM-ом считается первый найденный дисковод с маркерным файлом) 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:\%TAGFILE% set CDROM=%%d:&& goto metka) :metka rem каталог с апдейтами и маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.) if defined CDROM ( set UPDATESDIR=%CDROM%\I386\SVCPACK set UPDATESMASK=*.* ) else ( rem определяем переменную CDROM как каталог на HDD rem (если файл oeminfo.cmd у Вас будет не в каталоге $OEM$, rem то измените число обрезаемых от переменной справа символов с 7 на требуемое Вам) set CDROM=%~dp0 set CDROM=!CDROM:~0,-7! set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} set UPDATESMASK=KB*.* rem Снимаем атрибуты файлов attrib -H -S !UPDATESDIR!\!UPDATESMASK! ) rem Обеспечение правильности отработки мультизагрузочного CD/DVD if exist %CDROM%\I386\winn1.sif ( set WINNTSIF=%CDROM%\I386\winn1.sif ) else ( if exist %CDROM%\I386\winnt.sif ( set WINNTSIF=%CDROM%\I386\winnt.sif ) ) rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ ---> rem язык ОС (419 - рус.) rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции rem (ASCII-код символа после знака "равно" должен быть 09) for /F "tokens=3 delims= " %%j in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale') do (set lang=%%j) rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан; rem т.о. нет нужды его предварительно удалять echo [General]> "%OEMFILE%" echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%" echo Model=%MODEL%>> "%OEMFILE%" rem Достаем из winnt.sif (winn1.sif) серийный номер rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами) if defined WINNTSIF ( if %KEY% == 1 ( for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" %WINNTSIF%') do ( if %KEYISVISIBLE% == 1 ( echo [Support Information]>> "%OEMFILE%" if %lang% == 00000419 ( echo Line1=Ключ продукта: %%j>> "%OEMFILE%" ) else ( echo Line1=Product Key: %%j>> "%OEMFILE%" ) echo Line2=>> "%OEMFILE%" set i=3 ) else ( echo [OEMSpecific]>> "%OEMFILE%" echo SerialNo=%%j>>"%OEMFILE%" echo [Support Information]>> "%OEMFILE%" set i=1 )) ) else ( echo [Support Information]>> "%OEMFILE%" set i=1 ) ) else ( echo [Support Information]>> "%OEMFILE%" set i=1 ) rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Windows) for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "file(s)"`) do (set numfiles=%%m) if not defined numfiles ( for /F "usebackq tokens=1" %%m in (`dir %UPDATESDIR%\%UPDATESMASK% ^| find /i "файлов"`) do (set numfiles=%%m) ) rem Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37) if %lang% == 00000419 ( echo Line%i%=Дата и время установки ^(обновления^): %date% ^(%time:~0,-6%^)>> "%OEMFILE%" ) else ( echo Line%i%=Installation ^(updation^) date and time: %date% ^(%time:~0,-6%^)>> "%OEMFILE%" ) set /A i+=1 echo Line%i%=>> "%OEMFILE%" set /A i+=1 if %lang% == 00000419 ( echo Line%i%=Установленные компоненты и обновления ^(%numfiles%^):>> "%OEMFILE%" ) else ( echo Line%i%=Installed Components and Updates ^(%numfiles%^):>> "%OEMFILE%" ) set /A i+=1 echo Line%i%=>> "%OEMFILE%" set /A i+=1 rem вспомогательные переменные set l=0 set c=0 rem Список апдейтов (имена всех файлов без расширений) rem (без ключевого слова usebackq команда dir будет воспринята как rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения rem об отсутствии такого файла в текущем каталоге). for /F "usebackq tokens=1 delims=." %%j in (`dir /B %UPDATESDIR%\%UPDATESMASK%`) do ((set kbname=%%j) & (call :myprint)) rem Возвращаем атрибуты файлов if %UPDATESDIR% == %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE} ( attrib +S %UPDATESDIR%\%UPDATESMASK% ) rem Выход из этого пакетного файла. rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает rem передачу управления в конец текущего пакетного файла. Это позволяет легко rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto) goto :EOF :myprint if !c! == 0 ( set str=!kbname! ) else ( set str=!str! !kbname! ) set /A c+=1 if !c! == %UPMAX% ( echo Line%i%=!str!>> "%OEMFILE%" set /A i+=1 set /A l+=1 set str= set c=0 set /A tmp=numfiles-l*UPMAX ) else ( if %numfiles% LSS %UPMAX% ( if !c! == %numfiles% ( echo Line%i%=!str!>> "%OEMFILE%" ) ) if !tmp! LSS %UPMAX% ( if !c! == !tmp! ( echo Line%i%=!str!>> "%OEMFILE%" ) ) ) |
------- Последний раз редактировалось Sanja Alone, 10-10-2006 в 03:34. Причина: Обновление Отправлено: 23:06, 11-09-2006 | #48 |
Покинул форум Сообщения: 3254
|
YuriPet
Спасибо! :beer: |
Отправлено: 09:01, 12-09-2006 | #49 |
Ветеран Сообщения: 628
|
Профиль | Отправить PM | Цитировать Sanja Alone и все остальные авторы OEMINFO
может прикрутить к скрипту еще одну функцию - установка картинки с логотипом проца, в зависимости от типа процессора? Логотипы на почти все типы процов Intel и AMD у меня есть, осталось дело за малым, - написать сам скриптик :-) Может кто-то уже заморачивался, выложите свои наработки, хотелось бы использовать штатные средства винды (т.е. не используя devcon.exe, zcpu, autoit и т.п.), в каком-то из топиков шла речь про WMI, но тут без вдумчивого вникания в матчасть по этому вопросу не обойтись... |
Отправлено: 20:23, 20-09-2006 | #50 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[статья] Изменение OEM информации и логотипа Windows Vista | Vadikan | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 2 | 20-02-2014 23:53 | |
$OEM$ не копируется на HDD .:[все вопросы]:. | Sparrow | Автоматическая установка Windows 2000/XP/2003 | 104 | 26-10-2010 04:59 | |
Установка - [решено] Добавление OEM-предложений в win7 Welcome Center | borodatiy | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 3 | 06-11-2009 00:04 | |
Vista / 2008 - Добавление OEM логотипов, соглашений, обоев | САШOК | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 7 | 03-06-2009 12:46 | |
Добавление информации на сайт через вэб-интерфейс | Vopros | Вебмастеру | 1 | 26-06-2003 08:50 |
|