|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 Цитата:
Я её просто в $OEM$\$$\System32 поместил. ![]() |
||
|
------- Отправлено: 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 | |
|