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

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

ANDYru 18-05-2005 16:47 325343

[решено] Добавление OEM информации - все вопросы
 

VseDoFeNi 18-05-2005 22:26 325434

ANDYru

Так должен работать.
Код:


cmdow @ /HID
@echo off
SET D=%SYSTEMROOT%\system32\
if exist "%D%oeminfo.ini" del "%D%oeminfo.ini" /q
SET CDROM=%~d0
echo [General] >> "%D%oeminfo.ini"
echo Manufacturer=Автор версии : ANDY >> "%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
For /F "tokens=1* delims=." %%k in ('dir "%CDROM%\I386\SVCPACK\KB*.CA_" /b') do ( (set kbname=%%k) & (call :myprint) )
GOTO :EOF
:myprint
echo Line%i%=%kbname% >> "%D%oeminfo.ini"
SET /A  i=%i%+1
:EOF

Если это весь батник, в последней строке :EOF можно не писать - и так уже End Of File.
И еще, убери все пробелы в конце каждой строки, если не нужны специально.

Vadikan 18-05-2005 23:34 325463

Там похоже пробелы лишние в строке For /F "tokens=1 delims...
Должно быть
Код:

For /F "TOKENS=1 delims=.exe" %%j in ('dir /B %CDROM%\I386\svcpack\KB*.exe') do ((set kbname=%%j) & (call :myprint))

VseDoFeNi 18-05-2005 23:53 325468

Vadikan
в качестве разделителя достаточно точки - "delims=."

Vadikan 19-05-2005 00:49 325492

VseDoFeNi
Согласен. Кстати, ты свой файл из cmdlines.txt запускаешь? Я так понял строчку SET CDROM=%~d0

VseDoFeNi 19-05-2005 06:15 325524

Vadikan
Это я поправил просто тот, который ANDYru запостил. А сам я ничего не запускаю, просто лежит тут $OEM$\$$\System32\ давным давно, я уж про него и забыл совсем :)

Vadikan 19-05-2005 07:07 325533

VseDoFeNi
С такой поправкой как SET CDROM=%~d0 его можно только с CD запускать. Т.е. из cmdlines.txt...

VseDoFeNi 19-05-2005 07:59 325537

Vadikan
И да, и нет одновременно. Если его запустить из промежуточного батника, который будет запущен из cmdlines.txt, можно эту строчку вообще в промежуточный перенести, даже если сам OEMInfo.cmd на HDD лежать будет. Еще от параметров запуска зависит...

ANDYru 19-05-2005 09:24 325567

спасибо ответившим ! -но проблема осталась :)
дабавлю что OEMINFO.cmd запускается из RUNONCEEX.cmd
.
.
REG ADD %KEY%\050 /VE /D "добавление OEM инфы" /f
REG ADD %KEY%\050 /V 1 /D "%CDROM%\PROGRAMS\UTIL\oeminfo.cmd" /f
.
.
а RUNONCEEX.cmd соответственно из CMDLINES.txt

[COMMANDS]
"runonceex.cmd"

VseDoFeNi 19-05-2005 09:28 325569

ANDYru
пути не совпадают у тебя, цикл с ошибкой был....
Если через RunOnceEx посмотри значения в реестре :)
Цитата:

дабавлю что OEMINFO.cmd запускается из RUNONCEEX.cmd
он запускается именно из реестра у тебя.
верни на место строку
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\WIN51IP.SP2 SET CDROM=%%d:
все будет работать.
А вообще путей много :)

ANDYru 19-05-2005 18:11 325748

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\WIN51IP.SP2 SET CDROM=%%d:

такая строчка есть и в OEMINFO.cmd и в RUNONCEEX.cmd
сам RUNONCEEX.cmd - отрабатывает без проблемм и запускает OEMINFO.cmd - он тоже отрабатывает - только не всё - не добавляются в текстовик oeminfo.ini - список KB*.ca_ - находяшиеся на установочном сидюке - (только на конце чтоб после . было не ca_ а exe или дез расширения вовсе
- то есть хочу чтоб было в итоге

Дата установки системы : 19.05.2005
Время установки системы : 15.03 12:51
Установленные обновления :
KB873333 KB873339 KB884883 KB885222 KB885250 KB885626 KB885835
KB885836 KB885894 KB886185 KB886677 KB886716 KB887472 KB887606
KB887742 KB887797 KB888113 KB888302 KB889016 KB890175 KB890831
KB890859 KB890923 KB891781 KB893066 KB893086 KB893357 KB893803


а получается только :

Дата установки системы : 19.05.2005
Время установки системы : 15.03 12:51
Установленные обновления :



? - что не так делаю

VseDoFeNi 19-05-2005 18:28 325753

ANDYru
Запусти
Код:


For /F "tokens=1* delims=." %%k in ('dir "%CDROM%\I386\SVCPACK\KB*.CA_" /b') do ( (set kbname=%%k) & (call :myprint) )
GOTO :EOF
:myprint
echo Line%i%=%kbname% >> "%D%oeminfo.ini"
SET /A i=%i%+1
:EOF

с HDD только путь укажи к папке правильный, увидишь как отработает, потом сделаешь выводы.

ANDYru 19-05-2005 22:48 325810

толи я не то чтото делаю - просто загадка
пердыдущий пост заработал - но ! Но только если вместо "%CDROM% указываю конкретный диск - и ещё пытался обойтись без сидюки - зделал
Код:


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) )

- итог не пашет такая строка !
а так делаю пашет
Код:


rem For /F "tokens=1* delims=." %%k in ('dir "C:\Program Files\EasyBoot\disk1\I386\SVCPACK\KB*.ca_" /b') do ( (set kbname=%%k) & (call :myprint) )


VseDoFeNi 20-05-2005 09:35 325902

ANDYru
Цитата:

%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
Сними с файлов атрибут "скрытый" должно заработать.

ANDYru 20-05-2005 15:42 325986

если они в папке %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
при установке ставятся с атрибутами - то вопрос как в банике перед их проверкой снять им атрибут "скрытый"
загвоздка получается

зы я ещё не утомил ?

Vovanchik 20-05-2005 15:58 325997

ATTRIB -H -S -R %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\file.name
эта команда снимает атрибуты с файла
ATTRIB +H +S +R %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\file.name
эта восстанавливает

ANDYru 20-05-2005 16:22 326005

ура ! сработало ! вот мой итоговый вариан без заморочек с сидюком
Код:

cmdow @ /HID
@echo off
SET D=%SYSTEMROOT%\system32\
if exist "%D%oeminfo.ini" del  "%D%oeminfo.ini" /q
echo [General] >> "%D%oeminfo.ini"
echo Manufacturer=Автор версии : ANDY >> "%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


на нём пожалуй и оттанавлюсь ! всем огромное спасибо за оказанное моей проблеме внимание
правда вот интересно можно ли сделать так чтобы перечень файлов
Код:

Line7=KB873333
Line8=KB873339
Line9=KB884883
Line10=KB885222
Line11=KB885250
Line12=KB885626
Line13=KB885835
Line14=KB885836
Line15=KB885894
Line16=KB886185
Line17=KB886677
Line18=KB886716
Line19=KB887472
Line20=KB887606
Line21=KB887742
Line22=KB887797
Line23=KB888111
Line24=KB888113
Line25=KB888302
Line26=KB889016
Line27=KB890175
Line28=KB890831
Line29=KB890859
Line30=KB890923
Line31=KB891781
Line32=KB893066
Line33=KB893086
Line34=KB893357
Line35=KB893803

был таким
Код:

Line7=KB873333 KB873339 KB884883 KB885222 KB885250 KB885626
Line8=KB885835 KB885836 KB885894 KB886185 KB886677 KB886716
Line9=KB887472 KB887606 KB887742 KB887797 KB888111 KB888113
Line10=KB888302 KB889016 KB890175 KB890831 KB890859 KB890923
Line11=KB891781 KB893066 KB893086 KB893357 KB893803

так гораздо нагляднее и красивее !

ANDYru 24-05-2005 14:40 326942

мужики подскажитк как сделать чтобы было как в предыдущем посту в последнем синем окне (разбиение найденных КВ***** было не по одному в строчке а по 6 шт подряд затем опять 6 шт след. стокой и так пока не закончатся все найденные КВ*****

vserd 26-05-2005 14:03 327506

ANDYru
Тебе нужно переписать часть кода
Код:

:myprint
echo Line%i%=%kbname% >> "%D%oeminfo.ini"
SET /A i=%i%+1

так чтобы он формировал строку из шести КВ, а затем писал ее в файл.
Как конкретно, разбирайся с языком Bat-файлов (bath).
Я где-то натыкался на инфу что можно делать вычисления в команде SET. Так что все реально.

ANDYru 27-05-2005 12:36 327874

vserd
спасибо конечно (я и сам знал что часть кода надо переписать - вот только языка бат не знаю настолько чтобы сделать это без чьеё либо помощи - иначи сюда бы не писал)
может кто нибуть из владеющих Языком научит Дурака :) - буду весьма благодарен

Vovanchik 27-05-2005 13:58 327897

Вот тут посмотри... может и найдешь чего путного.

Vadikan 27-05-2005 14:19 327906

Тут дело скорее в команде dir. Ключ /b выводит список файлов по одному в строку. Можешь попробовать /d например, но тогда нужны другие tokens и delims. Короче, возни много, а толку мало :) Может кому-то и не лень будет возиться с таким, конечно....

Sanja Alone 11-06-2005 07:07 332020

Моя исправленная и дополненная + РАБОЧАЯ версия oeminfo.cmd
Код:

@echo off
 
SET D=%SYSTEMROOT%\system32\
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:
rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist %CDROM%\i386\winn1.sif (set winntsif=%CDROM%\i386\winn1.sif) else (set winntsif=%CDROM%\i386\winnt.sif)
 
rem Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан;
rem т.о. нет нужды его предварительно удалять

echo [General]> "%D%oeminfo.ini"
echo Manufacturer=Sanja Alone>> "%D%oeminfo.ini"
echo Model=Unattended XP DVD>> "%D%oeminfo.ini"
echo [OEMSpecific]>> "%D%oeminfo.ini"
rem Достаем из winnt.sif (winn1.sif) серийный номер - от нефиг делать
rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
rem Серийник не будет виден в окне "Сведения о поддержке"
rem При этом, в файле oeminfo.ini номер будет в строке SerialNo=XXXX

FOR /F "tokens=3 delims==] " %%i in ('find /I /N "ProductKey" %winntsif%') do (echo SerialNo=%%i>>"%D%oeminfo.ini")
echo [Support Information]>> "%D%oeminfo.ini"
echo Line1=Installation Date: %date%>> "%D%oeminfo.ini"
echo Line2=>> "%D%oeminfo.ini"
echo Line3=Installed Hotfixes:>> "%D%oeminfo.ini"
echo Line4=>> "%D%oeminfo.ini"
 
REM Line Number
SET i=5
 
rem Мне интересно видеть все, что установилось из каталога SVCPACK,
rem поэтому маску KB*.exe я заменил на *.exe
rem (без ключевого слова usebackq команда dir будет воспринята как
rem имя файла для подстановки в цикл FOR с последующей выдачей сообщения
rem об отсутствии такого файла в текущем каталоге).

For /F "usebackq tokens=1 delims=." %%j in (`dir /B %CDROM%\I386\SVCPACK\*.exe`) do ( (set kbname=%%j) & (call :myprint) )
rem Выход из этого пакетного файла.
rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает
rem передачу управления в конец текущего пакетного файла. Это позволяет легко
rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto)

GOTO :EOF
 
:myprint
echo Line%i%=%kbname%>> "%D%oeminfo.ini"
SET /A i+=1

Я постарался все объяснить в комментариях - читайте.

ANDYru 11-06-2005 18:35 332132

Sanja Alone
насчёт исправленная - в чём ?
насчёт рабочая - только у тебя (у меня например %CDROM%\I386\SVCPACK\*.ca_ там нет ни одного .exe
насчёт серийника - смысла нет (всё равно не видно)
итог : вариант не универсальный - то есть заработает не у всех , так что надобы доработать

Sanja Alone 12-06-2005 02:45 332245

ANDYru
Цитата:

насчёт исправленная - в чём ?
1. Выброшена лишняя проверка/удаление существующего oeminfo.ini и лишняя метка;
2. Цикл FOR теперь реально добавляет инфу в oeminfo.ini, а не просто присутствует "для красоты";
3. Добавлены комментарии на русском для валенков/чайников/юзеров (нужное подчеркнуть).

Цитата:

насчёт рабочая - только у тебя (у меня например %CDROM%\I386\SVCPACK\*.ca_ там нет ни одного .exe
1. У меня нет пачки дистрибутивов, чтобы угадать какие в этом каталоге могут быть файлы. У меня там *.exe + *.cat, причем разное к-во тех и других (т.к. дистриб SP1 и ставятся не только KB*.exe, а еще и Q*.exe, dotnet, mdac_typ, gdi_det и т.п.);
2. Можно сделать проверку расширения и в зависимости от этого изменять цикл - если не поленюсь, сделаю. А пока я с XPE мучаюсь, не до того...

Цитата:

насчёт серийника - смысла нет (всё равно не видно)
Помести в другое место - будет видно (т.е. не в [OEMSpecific] и не после SerialNo=, а, например, в одну из Line%i%=). Мне это не нужно (да и не только мне), я лишь для порядка сделал добавление серийника в oeminfo.ini

Цитата:

итог : вариант не универсальный - то есть заработает не у всех , так что надобы доработать
А здесь кто-нибудь выкладывал универсальный вариант?
В варианте с CartRoot-ом тоже есть грабли - у меня в CartRoot-е по два файла для KB867282 (KB8672~1.CAT + KB867282-IE6SP1-20050127.163319.cat) и для KB889293 (KB8892~1.CAT + KB889293-IE6SP1-20041111.235619.cat) и аж 4 для KB893803 (KB8938~1.CAT + KB8938~2.CAT + KB8938~3.CAT + KB893803_wxp.cat). И что с этим делать прикажешь?

P.S. Мой файл рассчитан на запуск из cmdlines.txt, т.е. изначально работоспособен только при установке Винды с CD/DVD. На универсальность он не претендует.

ANDYru 21-06-2005 15:13 334933

вот ёще один вариан (расширенный для пользователей обновлений с http://unattended.nm.ru)
http://rapidshare.de/files/2521318/oem.exe.html

Stesh 27-10-2005 23:03 368299

ANDYru
Цитата:

вот ёще один вариан (расширенный для пользователей обновлений с http://unattended.nm.ru)
http://rapidshare.de/files/2521318/oem.exe.html
Повторить можно ? А то уже удалили :(

ANDYru 27-10-2005 23:11 368303

Stesh
можно (естественно адекватно сегодняшнему дню)
http://rapidshare.de/files/6841980/OEMINFO.CMD.html

Stesh 27-10-2005 23:27 368310

ANDYru
Респект!
Очень удобно!

_CatDog_ 27-12-2005 03:40 387072

ОЕМ в свойствах компа
 
опять я :)
решил вот свой диск доделать, винда русская корпоративная
Код:

@echo off
SET D=%SYSTEMROOT%\system32\
REM delete oeminfo.ini if exists
if exist "%D%oeminfo.ini" del "%D%oeminfo.ini" /q
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:\cat.dog SET CDROM=%%d:
echo [General] >> "%D%oeminfo.ini"
echo Manufacturer=† Котопес † >> "%D%oeminfo.ini"
echo Model=Unattended XP SP2 DVD >> "%D%oeminfo.ini"
echo [Support Information] >> "%D%oeminfo.ini"
echo Line1=Дата установки: %date% >> "%D%oeminfo.ini"
echo Line2= >> "%D%oeminfo.ini"
echo Line3=Установленные обновления: >> "%D%oeminfo.ini"
echo Line4= >> "%D%oeminfo.ini"
REM Line Number
SET i=2
REM List quickfixes without exe extension
For /F "TOKENS=1 delims=*.CA_" %%j in ('dir /D %CDROM%\I386\SVCPACK\KB*.CA_') do ((set kbname=%%j) & (call :myprint))
GOTO :EOF
:myprint
echo Line%i%=%kbname% >> "%D%oeminfo.ini"
SET /A i+=1
:EOF

--------------------
файл должен добавлять в свойства моего компа инфу обо всех установленных апдейтах и дату установки (вы это знаете).
Дату он ставит нормально, а с апдейтами косяк: всего их примерно 40 шт, они находятя на диске в папке I386\SVCPACK и имеют расширение CA_. Короче, этот файл добавляет только 9 первых апдейтов в список и еще текст "42 д ©«®ў 250я106 Ў ©в
0 Ї Ї®Є 0 Ў ©в бў®Ў®¤­®"
В чем ошибка? Как исправить? Хелп ми...

arial 28-12-2005 23:47 387665

_CatDog_
Код:

@echo off

SET CDROM=%~d0
SET D=%SYSTEMROOT%\system32\

echo [General]> "%D%oeminfo.ini"
echo Manufacturer=Автор сборки: arial>> "%D%oeminfo.ini"
echo Model=Windows XP Corporate Edition>> "%D%oeminfo.ini"
echo [OEMSpecific]>> "%D%oeminfo.ini"
echo [Support Information]>> "%D%oeminfo.ini"
echo Line1=Дата инсталяции: %date%>> "%D%oeminfo.ini"
echo Line2=>> "%D%oeminfo.ini"
echo Line3=Установленные обновления: >> "%D%oeminfo.ini"
echo Line4= >> "%D%oeminfo.ini"
SET i=5
For /F "usebackq TOKENS=1 delims=*.CA_" %%j in (`dir /B %CDROM%\I386\SVCPACK\KB*.CA_`) do ((set kbname=%%j) & (call :myprint))
GOTO :EOF
:myprint
echo Line%i%=%kbname%>> "%D%oeminfo.ini"
SET /A i+=1
:EOF


Sanja Alone 30-12-2005 01:18 388015

_CatDog_
Цитата:

В чем ошибка? Как исправить? Хелп ми...
Посмотри чуть выше пример - в комментариях я все объяснил (причем, это было еще в июне). Мне тоже бывает лень читать всю интересующую тему, но здесь не так уж и много написано...


_CatDog_
arial
Цитата:

delims=*.CA_
Процитирую справку по команде FOR:
Цитата:

delims=xxx - определение набора разделителей для замены заданных по умолчанию пробела и знака табуляции.
Обратите внимание на выделенное слово - это набор разделителей, а не маска. Т.о., достаточно написать
Код:

delims=.
Кстати, это тоже уже было сказано в данной теме, только менее подробно.
Также излишеством является метка :EOF в конце файла. Команда GOTO :EOF и без того передает управление в конец текущего файла. Если помните времена DOS-а, где для ввода файла с клавиатуры исп-сь команда copy con имя_файла.расширение и для завершения ввода нужно было нажать Ctrr+Z, то вот эта комбинация клавиш как раз и добавляла метку окончания файла. И дополнительная метка уже не нужна.

qeraser 01-02-2006 15:01 399661

Возможно ли изменить, убрать сведения о процессоре, частоте, памяти?

YuriPet 01-02-2006 21:16 399772

qeraser
Вам сюда (я так думаю! :)) http://forum.oszone.net/showpost.php...69&postcount=2

Sanja Alone 01-02-2006 23:04 399805

qeraser
Цитата:

сведения о процессоре, частоте
Код:

[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]
;можно безболезненно изменить
"ProcessorNameString"="AMD Athlon(tm) "
;не уверен в безопасности изменения данного параметра
"~MHz"=dword:000005df

Цитата:

памяти
не знаю :dont-know

NikLok 13-03-2006 11:56 417155

Слегка доработал известный ( теперь уже и мне ) скрипт oemlogo.cmd. Доработан потупому (лень искать строковые функции) но работает.
После доработки каждая строка содержит по 6 наименований апдейтов. Столько окно вмещает по ширене по умолчанию. Собственно сам кусок доработки, мож кому надо.
Код:

echo Line10= >> "%D%oeminfo.ini"

set i=10
set j=0
set string0=
set string1=
set string2=
set string3=
set string4=
set string5=

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\WIN51IP SET CDROM=%%d
For /F "TOKENS=1 delims=.exe"  %%j in ('dir /B %CDROM%\I386\svcpack\KB*.exe') do ((set kbname=%%j) & (call :myprint))

if %j% == 1 echo Line%i%=%string0% >> "%D%oeminfo.ini"
if %j% == 2 echo Line%i%=%string0% %string1%>> "%D%oeminfo.ini"
if %j% == 3 echo Line%i%=%string0% %string1% %string2%>> "%D%oeminfo.ini"
if %j% == 4 echo Line%i%=%string0% %string1% %string2% %string3%>> "%D%oeminfo.ini"
if %j% == 5 echo Line%i%=%string0% %string1% %string2% %string3% %string4% >> "%D%oeminfo.ini"

GOTO :EOF
:myprint
if %j% == 0 set string0=%kbname%
if %j% == 1 set string1=%kbname%
if %j% == 2 set string2=%kbname%
if %j% == 3 set string3=%kbname%
if %j% == 4 set string4=%kbname%
if %j% == 5 set string5=%kbname%

if %j% == 5 echo Line%i%=%string0% %string1% %string2% %string3% %string4% %string5%>> "%D%oeminfo.ini"

if %j% == 5 set string0=
if %j% == 5 set string1=
if %j% == 5 set string2=
if %j% == 5 set string3=
if %j% == 5 set string4=
if %j% == 5 set string5=

if %j% == 5 set /A i=%i%+1
set /A j=%j%+1
if %j% == 6 set j=0

:EOF 
copy %d%oeminfo.ini C:\oeminfo.ini


Olehen 23-03-2006 04:51 420722

NikLock,
Цитата:

Слегка доработал известный ( теперь уже и мне ) скрипт oemlogo.cmd.
уточни, пжлст, куда
Цитата:

кусок доработки
вставлять или код модифицированного cmd приведи.:pray:

NikLok 23-03-2006 14:15 420894

Olehen
Смотри сообщение 44. Он приведен полностью.

Vadikan
Спасибо. Мне стыдно, там я не додумался искать. :sorry:

Shurikz 01-05-2006 19:54 433221

Ребят, объясните плиз, а зачем такие заморочки с oemlogo.bmp и oeminfo.ini? Ведь можно их просто положить в $OEM$\$$\System32\
и все. У меня так и сделано и все работает.

Sanja Alone 04-07-2006 02:14 457540

Доработанный вариант файла oeminfo.cmd
  • для удобства редактирования "под себя" все значимые переменные вынесены в "шапку"
  • кол-во апдейтов в одной строке теперь можно задать любое (переменная UPMAX; по ум. 6)
  • запись серийника (переменная KEY) в oeminfo.ini в двух вариантах (видимом KEYISVISIBLE=1 и невидимом KEYISVISIBLE=0), и только при наличии файла winn?.sif
! Внимание ! На этапе T-12 (cmdlines.txt) фрагмент кода, формирующий список апдейтов НЕ РАБОТАЕТ. Почему? - объяснить не могу (расширенная обработка команд включена по ум. и вроде все должно работать). На загруженной системе и при вызове из секции [GuiRunOnce] файла winnt.sif - все ОК (из секции [SetupParams] на Т-9 не проверял).
Код:

@echo off

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 кол-во апдейтов в одной строке
set UPMAX=6
rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=1
rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
set KEYISVISIBLE=0
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 каталог с апдейтами
set UPDATESDIR=%CDROM%\I386\SVCPACK
rem маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
set 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 Т.к. используется символ ">", то существующий файл 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%"
                        echo Line1=ProductKey: %%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 Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37)
echo Line%i%=Installation Date and Time: %date% (%time:~0,-6%)>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1
echo Line%i%=Installed Components and Updates:>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске (для рус. и англ. Винды)
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 Выход из этого пакетного файла.
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 04-07-2006 02:15 457541

Новый, основательно доработанный oeminfo.cmd - см. пост

YuriPet 08-09-2006 02:45 482320

А я вот на днях слегка доработал Доработанный вариант файла 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).

Sanja Alone 09-09-2006 03:33 482823

YuriPet
Цитата:

set HDDPATH=D:\WinXP\XP_HDD
Лучше не указывать абсолютных путей в данном файле. Предлагаю заменить на:
Код:

set HDDPATH=%~dp0
set HDDPATH=%HDDPATH:~0,-1%

Без второй строчки можно обойтись, если заменить в файле %HDDPATH%\I386 на %HDDPATH%I386.

Цитата:

Надеюсь - не обидится
Пока меня не забывают, обижаться не на что :)

P.S. А зачем понадобилось выбрасывать часть кода, отвечающую за видимость/скрытость серийника? Кое-кому это все же нужно.

prokazzza 09-09-2006 14:52 482907

YuriPet

Цитата:

Доработанный вариант файла oeminfo.cmd
а где строки для добавления картинки (oemlogo.bmp, oemlogo.gif)?????



YuriPet 09-09-2006 23:57 483007

Sanja Alone
Цитата:

Лучше не указывать абсолютных путей в данном файле. Предлагаю заменить на:
Спасибо - мысль действительно правильная (я чего-то об этом не подумал)
А "видимость/скрытость серийника" - ИМХО дело вкуса ;)

prokazzza
Цитата:

а где строки для добавления картинки (oemlogo.bmp, oemlogo.gif)?????
Зачем? :o Я её просто в $OEM$\$$\System32 поместил. :)

prokazzza 10-09-2006 10:46 483060

YuriPet

не видит добавленных обновлений
просто пустое место под надписью
Цитата:

По состоянию на 10.09.2006 11:47
установлены следующие обновления (после SP2):
вот тут все видит и строки картинки есть
Код:

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


YuriPet 10-09-2006 11:49 483076

prokazzza
Цитата:

Важно!
В этом пакетном файле используются символы кириллицы. Следовательно, для правильного её отображения в окне "Сведения о поддержке", сохранять файл необходимо в кодировке Windows (1251).
Обратите внимание!
В строке №81 слово "файлов" ("д ©«®ў") должно быть в кодировке DOS (866).

Sanja Alone 11-09-2006 23:06 483676

Исправленный и дополненный oeminfo.cmd

ВНИМНИЕ! Последняя версия oeminfo.cmd отныне находится здесь

Собственно, это мой старый вариант, объединенный с методом "CatRoot", предложенным ANDYru более года назад в теме Добавление OEM информации и реализованным YuriPet-ом на базе доработанного мною первоначального варианта oeminfo.cmd c MSFN (вроде никого не забыл :) ).

Что изменилось:
  • Теперь код работоспособен на любом этапе установки ОС (проблемы с cmdlines.txt решены).
  • При ненахождении маркерного файла, переменная CDROM устанавливается равной пути запуска файла oeminfo.cmd без 7 последних символов \$OEM$\ (в кач-ве альтернативы, можно было бы брать путь из параметра SourcePath в реестре, но этот способ менее универсален). В данном сл. для составления списка обновлений исп-ся метод "CatRoot".
  • Записи в "Сведениях о поддержке" теперь соотв. языку локали ОС.
  • В конце строки "Установленные компоненты и обновления" ("Installed Components and Updates") в скобках отображается общее к-во апдейтов (соот-щих маске).
  • Серийник по ум. видим.
  • Оптимизирован цикл определения CDROM-а (CDROM-ом считается первый найденный дисковод с маркерным файлом).

! Внимание !
Весь выделенный красным текст должен быть в кодировке 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%"
                )
        )
)

Приведенный выше файл с правильными кодировками здесьrar-архиве).

prokazzza 12-09-2006 09:01 483763

YuriPet

Спасибо! :beer:

EgOrus 20-09-2006 20:23 487350

Sanja Alone и все остальные авторы OEMINFO
может прикрутить к скрипту еще одну функцию - установка картинки с логотипом проца, в зависимости от типа процессора? Логотипы на почти все типы процов Intel и AMD у меня есть, осталось дело за малым, - написать сам скриптик :-)
Может кто-то уже заморачивался, выложите свои наработки, хотелось бы использовать штатные средства винды (т.е. не используя devcon.exe, zcpu, autoit и т.п.), в каком-то из топиков шла речь про WMI, но тут без вдумчивого вникания в матчасть по этому вопросу не обойтись...

Sanja Alone 21-09-2006 08:08 487483

EgOrus
Цитата:

в каком-то из топиков шла речь про WMI
Пост #23 в теме Утилиты для определения возможностей CD-привода (IfRW, IfDVD).

Насколько я понял, применительно к WMI есть минимум два способа реализации подобного (оба весьма геморрные):
  1. Утилита wmic.exe из дистрибутива Винды:
    Код:

    wmic CPU LIST FULL /FORMAT:list
    Нужно будет анализировать вывод этой (или одного из ее вариантов) команды, и в цикле(ах) if... else, зависящих от одного или нескольких параметров (главные кандидаты - Manufacturer и Name), копировать нужный логотип.
  2. Из cmd-файла создать vbs-скрипт, проделывающий аналогичные описанным выше действия, посредством анализа свойств класса Win32_Processor
В обоих случаях нужно знать список возможных значений параметров Manufacturer и Name (и/или еще каких-то других, более-менее информативных) для разных процессоров. Другими словами, придется написать свой CPU-Z :), а это - слишком неблагодарное занятие для банального отображения правильного логотипа...

PIL123 04-10-2006 16:33 493301

Всем монстрам, разработавшим такую штуку большой респект и моё почтение. Насколько я понял, финальная версия Вашего продукта тут: http://wiki.oszone.net/index.php/Изм...OEM_информации

Вопрос: будет ли это добро работать с сервером RIS?

NikLok 05-10-2006 16:20 493820

Sanja Alone
Цитата:

Вопрос: будет ли это добро работать с сервером RIS?
Хочу так же запускать с клачами CDROM или HDD и результаты при втором ключе класть в выделенный каталлог RIS сервера!
А я потом посмотрел и понял кому чего доставить надоть!

Sanja Alone 06-10-2006 05:00 494088

Incognitus
Цитата:

будет ли это добро работать с сервером RIS?
Без понятия :dont-know

NikLok
Цитата:

Хочу так же запускать с клачами CDROM или HDD и результаты при втором ключе класть в выделенный каталог
Нет проблем:
Код:

@echo off
if not '%2'=='' set TARGETDIR=%2
if /i '%1'=='cd' goto metka1
if /i '%1'=='hdd' goto metka2
goto :eof

:metka1
echo File started with switch %1
echo Target directory is: %TARGETDIR%
goto :eof

:metka2
echo File started with switch %1
echo Target directory is: %TARGETDIR%
goto :eof


PIL123 06-10-2006 15:20 494349

NikLok
Извини - не понял. Можно подробнее что там про RIS?

vlastan 09-10-2006 02:22 495243

Вложений: 1
При установке oeminfo.cmd из cmdlines.txt выскочило такое сообщение (см. аттач) Где нужно подправить, чтобы избавиться от этого окна? Вся инфа (продукт кей и т.д.) прописалась нормально, однако к списку апдейтов добавились названия того, что находилось в папке $OEM$ примерно так:

Код:

Product Key: ХХХХХ-ХХХХХ-ХХХХХ-ХХХХХ-ХХХХХ

Installation (updation) date and time: Mon 10/09/2006 ( 1:34)

Installed Components and Updates (116):

$$  $1  $Docs  $Progs  7za  Drivers
OEMINFO  Process  RunOnceEx  SetupCopyOEMInf  WatchDriverSigningPolicy
WinMUI  autologon  cmdlines  hkcr  hkcu  nircmd
regional  useraccounts  wallp  KB873339  KB883586  KB883667
KB884575  KB884883  KB885626  KB885836  KB885894  KB886677
KB886716  KB887472  KB887606  KB888111  KB888302  KB889016
KB889320  KB889673  KB889816  KB890046  KB890831  KB890859
KB892489  KB893008  KB893756  KB893803  KB894395  KB895961...

Руссификация тоже не сработала. Может что подскажете?

P.S. Винду ставил на виртуалке с образа диска. В оригинальном oeminfo.cmd ничего не менял, за исключением имени.

qeraser 09-10-2006 07:53 495263

vlastan
папка i386 в корне диска?

NikLok 09-10-2006 12:49 495379

vlastan у МЕНЯ аналогичная фигня!!! Пока не разбирался с нею!
qeraserI386 в корне диска!

vlastan 09-10-2006 13:42 495396

qeraser
конечно в корне. Попробовал на рабочей ОS запустить файл oeminfo.cmd с винта (для обновления инфы), все нормально прописалось на русском и без лишних названий. Попробую запустить файл oeminfo.cmd на другом этапе установки, может что получится.
NikLok
если что придумаешь отпишись здесь пожалуйста :)

P.S. Спасибо админам, что перенесли мой вопрос из другой темы сюда, я просто не заметил ветки с обсуждением ОЕМ инфы.

NikLok 09-10-2006 14:26 495422

vlastan
Все это из-за того что неправильно определется значение переменной WINNTSIF.
Щас я вставил выдачу в кусок который за это отвечает и буду прогонять еще раз!
Код:

rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist %CDROM%\I386\winn1.sif (
        set WINNTSIF=%CDROM%\I386\winn1.sif
        echo WINNTSIF = %WINNTSIF%>> "%OEMFILE%"
) else (
        if exist %CDROM%\I386\winnt.sif (
                set WINNTSIF=%CDROM%\I386\winnt.sif
                echo WINNTSIF = %WINNTSIF%>> "%OEMFILE%"
        )
)

Ты же можешь, если не используешь мультизагрузку на своем просто тупо ее определить!

Код:

                set WINNTSIF=%CDROM%\I386\winnt.sif
Псоле чего работоспособность должна восстановиться.
Дальнейшие результаты позже!

Похоже виновать пробел в строке
Код:

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)
Нучно писать set CDROM=%%d:&& goto metka

Ща прогоню! По крайне мере теперь не ругается под виндой!

vlastan 09-10-2006 15:46 495445

NikLok
Цитата:

set WINNTSIF=%CDROM%\I386\winnt.sif
в принципе это помогло, окно с ошибкой не появилось....а вот лишние названия в инфе так и остались, русификация тоже не реализовалась.

NikLok 09-10-2006 15:50 495447

vlastan
Перечитай еще раз пред пост я там изменения внес!
В частности надо убирать пробел и писать CDROM=%%d:&& goto metka
Тогда застревать не будет!
Правда у меня там сейчас другая проблема открылась. После Line4 - вывод отстуствует при работе из cmdlines.txt! При запуске из под виндов все ок!
Буду дальше ковырять!

Sanja Alone 10-10-2006 04:03 495620

All
В обновленном цикле определения 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:&& goto metka)

NikLok
Цитата:

вывод отстуствует при работе из cmdlines.txt!
Это и было причиной использования режима отложенного расширения переменных среды (ENABLEDELAYEDEXPANSION) - без него список апдейтов на данном этапе не формировался вовсе.
Последним же изменением в oeminfo.cmd было только goto metka в цикле определения CDROM-а. А это, по идее, никак не должно было повлиять на дальнейшие действия в файле. Хотя, в данном сл. трудно быть в чем-либо уверенным. Тем более, что установку Винды после описанного дополнения я еще не производил...

vlastan 10-10-2006 09:45 495683

Всем спасибо! Сделал запуск oeminfo.cmd из RunOnceEx.cmd на виртуалке установилось без проблем. Винда у меня английская корпоративная + MUI, который устанавливается из cmdlines.txt видимо из-за этого и не срабатывала русификация, поэтому и решил добавлять ОЕМ инфу при первом входе в систему.

Fanzuga 20-10-2006 09:21 500403

2ALL

Такой вопрос.
Хочу добавить свой логотип в свойства системы.
Для этого добавил в приведенный здесь файл команду.
Код:

copy /y oemlogo.bmp %windir%\system32
Данный батник запускается из RunOnceEx на последней стадии установки.
Все остальные команды из RunOnceEx корректно отрабатывают.
Инфа об обновлениях серийнике и тп срабатывает и отображается корректно.
Более того, если после финальной перезагрузки запустить этот батник, картинка появляется.

PS. %windir% на %systemroot% менял, не помогло.
Пытался сделать отдельный батник с этой одной командой, то же самое.

Вопрос: почему данная команда работает в установленной ОС, но не работает во время отработуи RunonceEx? когда тожу уже готовая ОС? ;)
Какие будут мнения?

Vadikan 20-10-2006 10:27 500430

Fanzuga
Код:

@echo off
xcopy "C:\TMP\OEMLOGO.BMP" "%WINDIR%\SYSTEM32\*.*"  /y /q /s

exit


Fanzuga 20-10-2006 10:28 500431

Vadikan
Спасибо большое.

Sanja Alone 20-10-2006 16:17 500620

Fanzuga
Цитата:

Для этого добавил в приведенный здесь файл команду.
Дело в том, что рабочий каталог запуска файла и каталог в к-ром лежит oemlogo.bmp в данном сл. не совпадают. Нужно в команде копирования указать полный путь файла oemlogo.bmp:
Код:

copy /y "%~dp0oemlogo.bmp" "%SYSTEMROOT%\SYSTEM32\"
(кавычки лучше указать на случай присутствия пробелов в путях).

mulja 21-10-2006 19:39 501102

Цитата:

copy /y oemlogo.bmp %windir%\system32
а не проще ли это файл подкинуть в $OEM$\$$\system32\oemlogo.bmp , и он сам скопируется на этапе установки

alcos 22-10-2006 06:01 501196

Привет всем, решил привести пример своего файлика oeminfo.cmd для внесения информации в oeminfo.inf на стадии установки через метод RunOnceEx.cmd

Вася Пупкин и имя@сервер замените на нужное вам.

Ещё очень важно, чтобы в номерах строк не было пропусков, т.е 12345-верно, а 1235-неверно, после строки 3 будет пусто в oeminfo.inf.

Код:

CMDOW @ /HID

::В этом файле были использованы доработанные строки из
::файла PatcherU.cmd автором которых является
::Balobanov Aleksandr aka Vse Do Fe'Ni
::vse_do_feni@front.ru ICQ 160827696 

@echo off
Color 1E
SetLocal EnableExtensions EnableDelayedExpansion

SET D=%SystemRoot%\system32\
set HF=%SystemDrive%
if exist %HF%\Updates.txt del %HF%\Updates.txt
if exist %HF%\Updates1.txt del %HF%\Updates1.txt

:;Проверяем установленную версию Windows
:;Считываем всю строку (usebackq - без кавычек) ключа "CurrentVersion" из реестра и присваеваем её переменной "CV"
FOR /F "usebackq tokens=* delims==" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion`) do set CV=%%i

:;Если последние 3 символа ("-3" - это отсчёт от конца строки) переменной "CV" равно 5.1, то считываем всю строку (usebackq - без кавычек) ключа "CSDVersion" и присваеваем её переменной "CSDV"
IF %CV:~-3%==5.1 FOR /F "usebackq tokens=* delims==" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion`) do set CSDV=%%i

:;Считываем всю строку (usebackq - без кавычек) ключа "BuildLab" из реестра и присваеваем её переменной "BUILD"
FOR /F "usebackq tokens=* delims==" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab`) do set BUILD=%%i

SET h=1
set N=0

echo [General] > "%D%oeminfo.ini"
echo Manufacturer=Автор сборки: Вася Пупкин >> "%D%oeminfo.ini"
echo Model=Windows XP Corporate Edition >> "%D%oeminfo.ini"
echo [OEMSpecific] >> "%D%oeminfo.ini"
echo [Support Information] >> "%D%oeminfo.ini"
echo Line%h%=Microsoft Windows XP Corporate Edition v%CV:~-3% %CSDV:~-14% >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=Версия сборки:  %BUILD:~-21% >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%= >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=Дата установки системы:  -- %date% -- >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=Время установки системы:  -- %time:~0,8% -- >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%= >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=Support Contact:    Вася Пупкин >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=>> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=.                e-mail: имя@сервер >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%= >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=Установленные обновления: >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%= >> "%D%oeminfo.ini"
SET /A h=%h%+1

:;Считываем из реестра все установленные обновления и выводим в файл Updates.txt в директорию C:\Hotfixes
FOR /F "usebackq tokens=7 delims=\" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"`) do echo %%i >> %HF%\Updates.txt

:;Выделяем с файла Updates.txt все установленные обновления с именем "KB*" и выводим в файл Updates1.txt в директорию C:\Hotfixes
FOR /F "usebackq  eol=! tokens=*" %%i IN (`find /i "KB" %HF%\Updates.txt`) do echo %%i >> %HF%\Updates1.txt

:;Далее считываем с реестра информацию о "DotNetFx 1.1" и дописываем в файл Updates1.txt
FOR /F "usebackq eol=! tokens=7* delims=\" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Updates\.NETFramework\1.1"`) do @call :prov "%%i"

:;Считываем с реестра информацию о "DotNetFx 2.0" и дописываем в файл Updates1.txt
FOR /F "usebackq eol=! tokens=7* delims=\" %%k IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0"`) do @call :prov1 "%%k"

:;Считываем с реестра информацию о "MSXML 6.0 Parser (KB925673)" и дописываем в файл Updates1.txt
FOR /F "usebackq tokens=* delims==" %%r IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{031816E0-7ED4-4F9B-986D-CE9E1A1CC6E5}" /v DisplayName`) do set PS=%%r
echo %PS:~-9,8% >> %HF%\Updates1.txt

:;Считываем с реестра информацию о "Клиент управления правами Windows (KB839178)" и дописываем в файл Updates1.txt
FOR /F "usebackq tokens=* delims==" %%r IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B820A362-C3CF-411F-880B-9BF5E992B25E}" /v HelpLink`) do set CL=%%r
echo KB%CL:~-6,8% >> %HF%\Updates1.txt

:;Считываем с файла "Updates1.txt" строки и передаём их переменной "exhf" в тело цикла через переменную "i"
FOR /F "usebackq skip=1 tokens=*" %%i IN (%HF%\Updates1.txt) do call :inspatch "%%i"
goto :end

:inspatch
set exhf=%~1
echo Line%h%=%exhf:~0,8% >> "%D%oeminfo.ini"
SET /A h=%h%+1
SET /A N+=1
goto :eof

:end
echo Line%h%= >> "%D%oeminfo.ini"
SET /A h=%h%+1
echo Line%h%=Всего обновлений %N% шт. >> "%D%oeminfo.ini"
del /q %HF%\Updates.txt
del /q %HF%\Updates1.txt
exit

:prov1
set k=%~1
echo %k% >> %HF%\Updates1.txt

:prov
set u=%~1
echo KB%u:~-6% >> %HF%\Updates1.txt


prokazzza 22-10-2006 10:52 501214

alcos

Неплохо сделано Спасибо!!!

prokazzza 22-10-2006 16:32 501259

alcos

ты что его изменил? еще раз скопировал, теперь не работает!!!
говорит:

Код:

CMDOW @ /HID "CMDOW" не является внутренней или внешней командой и т.д..

Ошибка: Система не удалось найти указанный раздел или параметр реестра.


YuriPet 22-10-2006 17:49 501279

prokazzza
CMDOW @ /HID это вызов cmdow.exe (Commandline Window Utility for NT4/2000/XP, Copyright © 2001-2004 Ritchie Lawrence)

prokazzza 22-10-2006 18:09 501291

разобрался почему не работает :)

YuriPet 22-10-2006 18:46 501304

prokazzza
Цитата:

разобрался почему не работает
А вот у меня обновления для .NET Framework 2.0 и MSXML 6.0 Parser не хочет включать :(
Не подскажешь в чем дело?

prokazzza 22-10-2006 19:01 501309

YuriPet

какие номера КВ?

и кол-во у мя 130 штук написано

YuriPet 22-10-2006 23:24 501392

prokazzza
Вопрос снят!
Пора новые очки покупать... :blind: :)

prokazzza 22-10-2006 23:33 501396

YuriPet :)

alcos 23-10-2006 14:09 501610

Я действительно два раза изменил содержимое Oeminfo.cmd, так как не все обновления прописываются в одном месте реестра и пришлось добавлять ещё строки.

prokazzza 23-10-2006 14:20 501616

alcos

то то я смотрю что сперва столько-то было, а потом больше обновлений написано стало. :)

YuriPet 24-10-2006 09:48 501914

Я тут того... :)
Быстренько скомбинировал "один из двух" (от Sanja Alone и alcos) :)
Код:

@echo off

::Магические слова :)
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

::<----- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ ----->

::Расположение временных файлов
set HF=%SystemDrive%

::Полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini

::Производитель
set MANUFACTURER=YuriPet

::Количество обновлений в одной строке (по ум. 6)
set UPMAX=6

::Вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=1

::Сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
set KEYISVISIBLE=0

::Маркерный файл для определения CDROM-а
set TAGFILE=WIN51

::Присвоение переменной 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:&& goto metka
:metka

::Обеспечение правильности отработки мультизагрузочного 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
        )
)
::Определяем язык ОС (419 - рус.)
::!ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции
::(ASCII-код символа после знака "равно" должен быть 09)
for /F "tokens=3 delims=        " %%j in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale') do (set lang=%%j)

::<----- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ ----->

::Удаление существующих файлов с именами, совпадающими с теми, что используются в качестве временных
if exist %HF%\Prog.txt del %HF%\Prog.txt
if exist %HF%\Updates.txt del %HF%\Updates.txt

::Считываем всю строку (usebackq - без кавычек) ключа "BuildLab" из реестра и присваеваем её переменной "BUILD"
FOR /F "usebackq tokens=* delims==" %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab`) do set BUILD=%%i

::Т.к. используется символ ">", то существующий файл oeminfo.ini будет перезаписан;
::т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
if %lang% == 00000419 (
        echo Manufacturer=Установил: %MANUFACTURER%>> "%OEMFILE%"
        echo Model=Сборка: %BUILD:~-21%>> "%OEMFILE%"
) else (
        echo Manufacturer=Manufacturer: %MANUFACTURER%>> "%OEMFILE%"
        echo Model=Build: %BUILD:~-21%>> "%OEMFILE%"
)

::Достаем из winnt.sif (winna.sif) серийный номер
::Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
::Если номер не будет виден в окне "Сведения о поддержке"
::то в файле oeminfo.ini номер будет в строке SerialNo=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
)

::Произвольная информация, для отображения в окне "Сведения о поддержке"
echo Line%i%=Установлена операционная система Windows XP Professional>> "%OEMFILE%"
set /A i+=1
echo Line%i%=с интегрированным Service Pack 2, и последующиими пакетами>> "%OEMFILE%"
set /A i+=1
echo Line%i%=обновлений системы защиты и программного обеспечения.>> "%OEMFILE%"
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

::Считываем из реестра наименования установленных программ и обновлений и выводим во временный файл Prog.txt
for /F "usebackq tokens=7 delims=\" %%z IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"`) do echo %%z >> %HF%\Prog.txt

::Выделяем из файла Prog.txt обновления (с именем "KB*") и выводим во временный файл Updates.txt
for /F "usebackq  eol=! tokens=*" %%g IN (`find /i "KB" %HF%\Prog.txt`) do echo %%g >> %HF%\Updates.txt

::Считываем из реестра информацию о "DotNetFx 1.1" и дописываем в файл Updates.txt
for /F "usebackq eol=! tokens=7* delims=\" %%y IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Updates\.NETFramework\1.1"`) do @call :prov "%%y"

::Считываем из реестра информацию о "DotNetFx 2.0" и дописываем в файл Updates.txt
for /F "usebackq eol=! tokens=7* delims=\" %%k IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0"`) do @call :prov1 "%%k"

::Считываем из реестра информацию о "MSXML 6.0 Parser (KB925673)" и дописываем в файл Updates.txt
for /F "usebackq tokens=* delims==" %%r IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{031816E0-7ED4-4F9B-986D-CE9E1A1CC6E5}" /v DisplayName`) do set PS=%%r
echo %PS:~-9,8% >> %HF%\Updates.txt

::Считываем из реестра информацию о "Клиент управления правами Windows (KB839178)" и дописываем в файл Updates.txt
FOR /F "usebackq tokens=* delims==" %%r IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B820A362-C3CF-411F-880B-9BF5E992B25E}" /v HelpLink`) do set CL=%%r
echo KB%CL:~-6,8% >> %HF%\Updates.txt

::Определяем общее количество обновлений
set numupd=0
for /F "usebackq skip=1 tokens=*" %%n IN (%HF%\Updates.txt) do set /A numupd+=1

::Дата инсталляции ОС (обновления) в формате DD.MM.YYYY, например 20.05.2005
if %lang% == 00000419 (
        echo Line%i%=Дата установки ^(обновления^): %date%>> "%OEMFILE%"
) else (
        echo Line%i%=Installation ^(updation^) date: %date%>> "%OEMFILE%"
)
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1
if %lang% == 00000419 (
        echo Line%i%=Установлены обновления ^(%numupd%^):>> "%OEMFILE%"
) else (
        echo Line%i%=Installed Updates ^(%numupd%^):>> "%OEMFILE%"
)
set /A i+=1
echo Line%i%=>> "%OEMFILE%"
set /A i+=1

::вспомогательные переменные
set l=0
set c=0

::Считываем с файла "Updates.txt" строки и передаём их переменной "kbname1" в тело цикла через переменную "j"
FOR /F "usebackq skip=1 tokens=*" %%j IN (%HF%\Updates.txt) do ((set kbname1=%%j) & (call :myprint))
del /q %HF%\Prog.txt
del /q %HF%\Updates.txt
goto :EOF

:myprint
set kbname=%kbname1:~0,8%
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=numupd-l*UPMAX
) else (
        if %numupd% LSS %UPMAX% (
                if !c! == %numupd% (
                        echo Line%i%=!str!>> "%OEMFILE%"
                )
        )
        if !tmp! LSS %UPMAX% (
                if !c! == !tmp! (
                        echo Line%i%=!str!>> "%OEMFILE%"
                )
        )
)
goto :eof

:prov1
set k=%~1
echo %k% >> %HF%\Updates.txt

:prov
set u=%~1
echo KB%u:~-6% >> %HF%\Updates.txt


prokazzza 24-10-2006 10:03 501921

YuriPet

Слушай вот такой прикол сделать чтобы из реестра считывалась инфа например о материнке, о видяхе, то есть об всем оборудывании стоящем на данном компьтере и добавлялась на экран с YuriPet :) Как думаешь?

YuriPet 24-10-2006 10:06 501922

prokazzza
Думать надо... :)

prokazzza 24-10-2006 10:10 501925

YuriPet

Думай :)

YuriPet 24-10-2006 23:22 502286

prokazzza
"вытащить" из реестра информацию о любом устройстве совсем не сложно :)
Например о видеокарте:
Код:

FOR /F "usebackq tokens=* delims==" %%i IN (`REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000" /v DriverDesc`) do set VIDEO=%%i
Echo Видео: %VIDEO:~22%>>test.txt

По аналогии можно взять наименование любого устройства.

Вопросы: ;)
1. А зачем оно надо?
2. Как ты себе представляешь, это должно выводится?

prokazzza 24-10-2006 23:36 502290

YuriPet

Давай попробуем, вместо привычной инфе о проце, будет вся инфа об оборудовании, и большой респект тебе лично ;)

Есть у тя на пробу какой-нить вариант?

придется расширять границы CPL системы, места тама не очень много :)

YuriPet 24-10-2006 23:49 502298

Такой путь мне не по силам :(
Это надо глубоко разобраться со структурой файла sysdm.cpl и затем сильно его "покурочить" ;)

prokazzza 24-10-2006 23:52 502300

YuriPet

Надо посмотреть как туда заноситься инфа о проце, наверняка считывает с реестра, больше не откуда, нужно тут покумекать. :)


YuriPet 25-10-2006 00:02 502305

Нет. :no:
Я за это не берусь. :unsure:

Sanja Alone 25-10-2006 05:54 502351

prokazzza
Цитата:

инфа о проце
пост #35 этой темы содержит ответ на данный вопрос. Впрочем, как и закинутая тобой в вику статья :)

Цитата:

всем оборудывании стоящем на данном компьтере и добавлялась на экран
Есть такая поговорка "Що занадто, то не здраво". Здесь она весьма уместна :) Какой смысл в "Сведениях о поддержке" и/или в "Общих сведениях о системе" дублировать инфу, легко получаемую с пом. штатных утилит systeminfo.exe или msinfo32.exe?


Добавлено (2006-10-28):
Кого заинтересует упомянутая статья о параметрах реестра, содержащих инфу об оборудовании - скачайте любой из архивов по ссылкам, указанным в посте #98 этой темы.

Sanja Alone 25-10-2006 07:09 502361

All
Замечания по синтаксису командных (пакетных) файлов:
  1. Комментарий в командных файлах должен идти после команды rem или двойного двоеточия :: (это неправильная метка, к-рая пропускается; см. статью).
  2. Не лепите лишних пробелов перед символом переадресации, т.к. они дополнят пересылаемую строку, что абсолютно не нужно (например, вместо echo %%z >> %HF% пишите echo %%z>> %HF%).

prokazzza 25-10-2006 08:51 502373

Sanja Alone

Прежде чем писать, сперва во первых надо внимательно почитать о чем идет речь, а речь шла вот об этом, можно ли поместить дополнительную инфу об оборудовании сюда.



во - вторых, представленных вами пост #35 (ни к селу ни к городу) и совершенно не отноcится к тому о чем мы с YuriPet говорили
в - третьих, уберите ссылку на статью в wiki, во-первых, это незаконченных цикл статей, во-вторых, Vadikan сам разместит ссылки когда будет все завершено.

alcos 25-10-2006 12:10 502461

Системные переменные

%OS% - Operating System
%AppData% - определяет следующий путь "C:\Documents and Settings\Администратор\Application Data"
%UserProfile% - определяет следующий путь "C:\Documents and Settings\Администратор"
%AllUsersProfile% - определяет следующий путь "C:\Documents and Settings\All Users"
%ProgramFiles% - определяет следующий путь "C:\Program Files"
%SystemRoot% - определяет следующий путь "C:\Windows"
%SystemDrive% - определяет следующий путь "C:\"
%Temp% - определяет следующий путь "C:\DOCUME~1\9335~1\LOCALS~1\Temp"
%Tmp% - определяет следующий путь "C:\DOCUME~1\9335~1\LOCALS~1\Temp"
%WinDir% - определяет следующий путь "C:\Windows"
%HOMEDRIVE%%HOMEPATH% - определяет следующий путь "C:\Documents and Settings\Администратор"
%HOMEDRIVE% - определяет следующий путь "C:\"
%HOMEPATH% - определяет следующий путь "\Documents and Settings\Администратор"
%USERNAME% - определяет имя пользователя
%USERDOMAIN% - определяет доменное имя
%NUMBER_OF_PROCESSORS% - определяет количество процессоров
%PROCESSOR_IDENTIFIER% - определяет модель процессора

%CD% - Показывает путь, с которого был запущен командный файл. "Current Directory"

Можно всю инфу вывести в одном окошке, там, где и обновления, только упорядочить.
А никто не знает, сколько строк максимум можно туда вписать. Можно, конечно, и циклом определить, тупо номера вписывать до бесконечности оно само остановится на последнем.

Sanja Alone 26-10-2006 04:49 502787

prokazzza
Цитата:

инфу об оборудовании сюда.
Это как раз и есть окно "Общие сведения о системе", о чем я и написал.

Цитата:

и совершенно не отноcится к тому о чем мы с YuriPet говорили
Относится, процитирую: "Надо посмотреть как туда заноситься инфа о проце, наверняка считывает с реестра, больше не откуда". Вот я и дал ссылку на соотв. параметры реестра.

Цитата:

уберите ссылку на статью в wiki
Я в состоянии принимать решения о содержании размещаемой инф-ции самостоятельно.

Цитата:

это незаконченных цикл статей
Для незаконченных статей (или их фрагментов) нужно исп-ть Шаблон:Незавершенная статья (он же Шаблон:Compu-stub). Этот шаблон предназначен именно для подобных случаев.

Цитата:

Vadikan сам разместит ссылки когда будет все завершено
Если Вадим изменит ссылку, я подредактирую пост. На данный момент ссылка актуальна.

Vadikan 26-10-2006 05:03 502792

prokazzza
Пусть ссылка остается, информация же в статье правильная (надеюсь ;-). Тем более, что она тут в тему.


P.S: Будьте вежливее к коллегам :)

prokazzza 26-10-2006 08:49 502826

Sanja Alone

Вот опять ты начинаешь спорить и опять ты не прав, еще раз повторю читать нужно внимательно.
Цитата:

Относится, процитирую: "Надо посмотреть как туда заноситься инфа о проце, наверняка считывает с реестра, больше не откуда". Вот я и дал ссылку на соотв. параметры реестра.
мы говорили о файле sysdm.cpl, а не параметрах реестра, которые я и так хорошо знаю.
Цитата:

Я в состоянии принимать решения о содержании размещаемой инф-ции самостоятельно.
я не буду ниче говорить, потому что Vadikan оставил ссылку, хотя совершенно не понимаю к чему тут эта ссылка именно в этой статье, которая не относиться к оборудыванию, во всей статье не было даже намека на занесение в инфо такой информации, а когда мы же об этом заговорили, ты же решил нас переубедить в глупости такой идеи, хотя мы просто обсуждали получится это или нет.
Цитата:

Для незаконченных статей (или их фрагментов) нужно исп-ть Шаблон:Незавершенная статья (он же Шаблон:Compu-stub). Этот шаблон предназначен именно для подобных случаев.
Это я тоже прекрасно знаю, уж поверь не в первый раз кидаю статью на wiki, но под незавершенным циклом статей, я подрузумевал не эту именно статью, прочитай внимательно, я говорил "статей, а не статья".

Vadikan
Зачем он мне дал ссылку на мою же статью :) Он думает у мя с паматью что-то не то. :)

Vadikan 26-10-2006 09:07 502835

prokazzza
Ссылку я оставил потому, что она напрямую относится к обсуждаемому вопросу - речь, насколько я понимаю, идет о добавлении расширенной информации об аппаратном обеспечении в свойства системы. И потом, даже если ты знаешь об этой статье, YuriPet или кто-то другой может не знать, а между тем в статье содержится полезная информация.

Давайте все-такие не будем выяснять отношения в форуме.

P.S.. Я что-то не получил ответ на последний PM (меня интересуют ответы на предложения, содержащиеся в пунктах 2 и 3)

Sanja Alone 26-10-2006 13:30 502955

All
Полезная инфа: перечень команд Windows XP с описанием в одном файле HTM - ссылка. В принципе, это все тот же ntcmds.chm, только в длину :)


prokazzza
С тобой трудно общаться. Ты противоречишь сам себе. Безосновательно обвиняешь. Не придерживаешься своего же пожелания о внимательном прочтении сообщений. Подробности я тебе отправил в ПС - если будешь с чем-либо не согласен, отвечай также посредством ПС.

P.S. Я не буду со 100% уверенностью утверждать, но, похоже, что данный цикл статей основан на информации с ru-board: Описание параметров и разделов реестра Windows ХР (html) или тоже самое, только в chm-формате. Полагаю, что нужно привести эти ссылки в статьях в любом случае.

Vadikan 26-10-2006 23:44 503209

Я вот тоже думал, откуда такими объемами и в такие сроки информация берется :) Нда, в таком случае лучше просто в шапке твиков реестра эти ссылки разместить, что я и сделаю.

NikLok 27-10-2006 12:52 503352

Sanja Alone
После указания тобой на мои огрехи и копания в скрипте выяснил следующие.
В своем winnt.sif имею закоментированную строчку с серийником и нормальную активную (экспериментировал с IE7).
В результате твой скрипт выдает 2 раза секцию с серийником! То есть появляется 2 раза [Support Information].
После такого "добавления" остальная часть файла просто не показывается в сведениях о поддержке!
Может быть станем анализировать на коментарии или контролировать повторность вовды секций?

И еще фрагмен:
Код:

        set CDROM=%~dp0
        set CDROM=!CDROM:~0,-7!

вызывает вопросы.
Не пояснишь вторую строку. Что-то мне его читабельность не катит.

Sanja Alone 28-10-2006 04:51 503631

Новая версия oeminfo.cmd (2006-10-27)

Вся инфа и цветастый :) код в вике

Что изменилось:
  • Реализован реестровый метод (Reg) составления списка обновлений (запускайте файл с ключом /r или /R).
  • Расширена выводимая информация об ОС.
  • Появилась возможность дополнить отображаемую инф-цию своими строками (ищите в файле текст "Пример добавления своих строк").
  • Проведена оптимизация (выброшены н-рые лишние операции, н-рые заменены более продуктивными).

Прямая ссылка для скачивания rar-архива с файлом - вот


P.S. Меня интересует мнение по реализации реестрового метода (особенно от создателей UpdatePack-ов) о корректности использования для составления списка обновлений ветки HKLM\SOFTWARE\Microsoft\Updates. С веткой HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix код был бы попроще, но здесь перечислены не все апдейты (например, нет DotNet-овских). Вариант с HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall мне кажется несерьезным, т.к. требует чуть-ли не пословного сравнения параметров DisplayName для н-рых обновлений в ветках вида {7131646D-CD3C-40F4-97B9-CD9E4E6262EF}. Также хочу поинтересоваться о правильности идеи отбрасывания денонсированных обновлений исключением веток, содержащих "SP-".

alcos 29-10-2006 06:05 503932

Следующая строка должна иметь вот такой вид, а в оригинале там ошибка (применён не апостроф, а одинарная кавычка и отсутствует параметр usebackq) и поэтому команда не обрабатывается как надо. В итоге переменной lang ничего не присваивается.

Код:

rem язык ОС (419 - рус.)
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции
rem (ASCII-код символа после знака "равно" должен быть 09)
for /F "usebackq tokens=3 delims=        " %%j in (`reg query "HKEY_CURRENT_USER\Control Panel\International" /v Locale`) do set lang=%%j

Sanja Alone
К сожалению в папке с каталогами безопасности тоже отсутствует часть обновлений и я предложил вытаскивать их из реестра, естественно более громоздко, но точнее.

Предлагаю вот так вытаскивать путь к дистрибутиву, так как на диске нельзя разместить несколько дистрибутивов в одной папке i386 и естественно они все разные.

Код:

::Считываем всю строку ключа "SourcePath" из реестра и присваеваем её переменной "WINNTSIF"
FOR /F "usebackq tokens=3 delims=        " %%i IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath`) do set WINNTSIF=%%i
set WINNTSIF=%WINNTSIF:~2%

::Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist "%CDROM%%WINNTSIF%\winn?.sif" (
        set WINNTSIF=%CDROM%%WINNTSIF%\winn?.sif
)


Sanja Alone 29-10-2006 11:15 503983

alcos
Цитата:

в оригинале там ошибка
Нет там ошибки. Это вариант команды. Процитирую фрагмент справки по FOR:
Код:

FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры]
FOR /F ["options"] %variable IN ("literal string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

    или, если использован параметр usebackq:

FOR /F ["options"] %variable IN (filenameset) DO command [command-parameters]
FOR /F ["options"] %variable IN ('literal string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]

ASCII-код кавычек в первом сл. - 27 (хвост кавычки влево); в случае usebackq - 60 (хвост вправо).

Цитата:

вытаскивать их из реестра
Мой вариант реализации подходит?

Цитата:

вот так вытаскивать путь к дистрибутиву
ОК. Пусть будет в кач-ве резервного способа.

P.S. Обновил файл.

YuriPet 29-10-2006 16:25 504057

Sanja Alone
В последнем варианте OEMINFO.CMD в перечень обновлений у меня попал IE7 и "прописался" самым первым :), что испортило внешний вид списка :(
Нельзя ли как-то "зафиксировать" длину вписываемого в список имени (добавлять до восьми знаков)? :shuffle:
Тогда возможно безболезненно и "...буквы M, S, Q заменяются на KB" убрать ;)

Sanja Alone 29-10-2006 17:28 504072

YuriPet
Цитата:

в перечень обновлений у меня попал IE7
Могу я посмотреть на reg-файл? (regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"). Можно на мыло, на rapidshar-у или просто вложив заархивированный файл в сообщение.

Цитата:

добавлять до восьми знаков
Дополнять можно заменой того же "M" на "пробелM". А можно вообще оставлять названия как есть, но, тогда KB887606_26 и KB887606_42 будут считаться разными обновлениями и займут в списке больше одной позиции.

Цитата:

и "...буквы M, S, Q заменяются на KB" убрать
Эти апдейты в описаниях так и называются, например:
Код:

M886903 = Microsoft .NET Framework 1.1 Hotfix (KB886903)
S867460 = Microsoft .NET Framework 1.1 Service Pack 1 (KB867460)

Насчет Q не скажу, но такие обновления были до SP2.

Но, если какая-то замена не нужна, то следует просто удалить соотв. заменяющую строку:
Код:

set tmp=!tmp:M=KB!
set tmp=!tmp:S=KB!
set tmp=!tmp:Q=KB!

All
P.S. Если у кого-то в список апдейтов добавляется что-то лишнее, то, пожалуйста, выкладывайте свой файл ветки реестра апдейтов (используйте команду regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"). Только заархивируйте его чем-нибудь. Надеюсь, что никто не посчитает это конфиденциальной инфой :) - имя мне нужно, чтобы знать кому отвечать (вместо %USERNAME% даже лучше вписать свой ник на форуме).

YuriPet 29-10-2006 18:22 504081

Sanja Alone
Я не совсем "въехал" по-поводу
Цитата:

Дополнять можно заменой того же "M" на "пробелM"
Предлагалось сделать так, чтобы вместо, например, "IE7" было "IE7пятьпробелов".

Sanja Alone 30-10-2006 05:50 504215

Новая версия oeminfo.cmd (2006-10-30)

Что изменилось:
  • В список попадают все обновления ветки HKLM\SOFTWARE\Microsoft\Updates.
  • Если название обновления короче 8 символов, то оно дополняется пробелами до этой длины (нужно для выравнивания списка в окне "Сведения о поддержке").
Смотреть здесь
Качать здесь


YuriPet
Цитата:

Предлагалось сделать так, чтобы вместо, например, "IE7" было "IE7пятьпробелов".
Уже сделал :)

YuriPet 30-10-2006 10:27 504301

Вложений: 1
Sanja Alone
За "Уже сделал :)" спасибо, но... Шрифт то не моноширинный!
Т.е. моя идея с восьмью символами не срабатывает и список не выравнивается :(
Может с табуляцией поэкспериментировать?

И еще..
Твой CMD сообщает о 130 обновлениях и мой тоже. Но у меня среди них отсутствуют ie7 и WGA!
Получается у тебя чего-то нет? "Где собака порылась?" ;)
Оба oeminfo.ini вложены.

Sanja Alone 31-10-2006 02:56 504722

Новая версия oeminfo.cmd (2006-10-31)

Что изменилось:
  • Введен анализ командной строки (можно использовать ключи /k, /v, /r).
  • Файл правильно работает как с русской, так и с английской версией REG.EXE.
  • Названия обновлений выравниваются по длине в 8 символов при любом методе составления списка.
Смотреть
Качать


YuriPet
Цитата:

Может с табуляцией поэкспериментировать?
Расползаются еще больше и как попало :(
Цитата:

у меня среди них отсутствуют ie7 и WGA
Какой oeminfo.cmd используется?
Цитата:

"Где собака порылась?"
Расхождение вызвано DotNet 2.0 обновлениями (KB922770,KB916002,KB917283) - у них глубина пути меньше, вот мой файл их и отбрасывает (завтра подумаю, что можно сделать) и KB909520 (лежит в подветке SP-1). Проблему с KB909520 уже исправил.
В свою очередь, в файле you_oeminfo.ini присутствуют ie7, WGA, KB887606 и KB888111, к-рых нет уже в oeminfo.ini. Вот и получалось, что оба файла выдавали одинаковое к-во обновлений :)

YuriPet 31-10-2006 11:40 504803

Sanja Alone
Еще одна "бяка"... :(
После установки полного английского IE7 появляются:
Цитата:

IDNMitigationAPIs (Microsoft Internationalized Domain Names Mitigation APIs);
NLSDownlevelMapping (Microsoft National Language Support Downlevel APIs).
Их имена "изменяются-обрезаются", соответственно до "IDNKBiti" и "NLKBDown"
Наверное "Полного удовлетворения получить нельзя!?" :biggrin:

Sanja Alone 01-11-2006 04:25 505127

Новая версия oeminfo.cmd (2006-11-01)

Что изменилось:
  • Решена проблема с обновлениями .Net 2.0. Теперь они также попадают в список.
Смотреть
Качать


YuriPet
Цитата:

Их имена "изменяются-обрезаются"
Можно поступить радикально - убрать фрагмент кода:
Код:

set tmp=!tmp:M=KB!
set tmp=!tmp:S=KB!
set tmp=!tmp:Q=KB!
set tmp=!tmp:~0,8!

После этого, названия всех обновлений будут вписываться в первозданном виде. Выравнивание, ес-но, пойдет лесом :)
Цитата:

Наверное "Полного удовлетворения получить нельзя!?"
Угу :)

YuriPet 01-11-2006 09:45 505187

Sanja Alone
А если попробовать реализовать такой путь - сначала вывести только обновления с именами не соответствующими форматам KB*, M*, S* и Q* (без подмен, без обрезания, отсортированные, по одному в строке), а затем все остальные (с подменой "M", "S", "Q" на "KB", урезанные до 8-ми знаков, осортированные и по 6 в строке)?
P.S. Я еще не надоел? :)

prokazzza 01-11-2006 09:53 505192

Sanja Alone

почему у тя отображается только 104 обновления
а у alcos 130???

YuriPet 01-11-2006 10:30 505203

prokazzza
Запусти CMD-шник с ключом "/R" ;)

prokazzza 01-11-2006 10:52 505208

Sanja Alone
YuriPet

Oeminfo alcos


Oeminfo Sanja Alone


Oeminfo Sanja Alone c ключом /R


Sanja Alone 02-11-2006 08:10 505644

YuriPet
Цитата:

А если попробовать реализовать такой путь
Я подумаю... Но это испортит внешний вид списка :(


prokazzza
Цитата:

отображается только xxx обновлений
Кинь мне файлик, полученный в рез-те выполнения такой команды
Код:

regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"

prokazzza 02-11-2006 10:27 505712

Sanja Alone

Цитата:

Цитата Sanja Alone
отображается только xxx обновлений

Нужно чтобы всё отображалось :)

Цитата:

Цитата Sanja Alone
В список попадают все обновления ветки HKLM\SOFTWARE\Microsoft\Updates.

Похоже что не все

alcos 02-11-2006 13:04 505806

Sanja Alone
Последний файлик вроде срабатывает неплохо, но:
У меня из 92 обновлений показывает только 89.

Отсутствуют:
MSXML 6.0 Parser (KB925673)
Клиент управления правами Windows (KB839178)
Обновление безопасности для Windows XP (KB913433)

Все они прописаны только в секции Uninstal реестра и каталоги безопасности на них отсутствуют тоже.

Sanja Alone 04-11-2006 06:53 506751

Новая версия oeminfo.cmd (2006-11-04)

Что изменилось:
  • Можно указать по какой длине выравнивать названия обновлений - 8 символов по ум. (определяется переменной UPNAMEL).
  • Буквы M, S, Q в названиях обновлений больше не заменяются на KB.
Смотреть
Качать


prokazzza
Цитата:

Похоже что не все
Из ветки HKLM\SOFTWARE\Microsoft\Updates - ВСЕ! А что еще где-то прописывается, так это особые ситуации и они требуют отдельного рассмотрения.


alcos
Цитата:

Все они прописаны только в секции Uninstal реестра
Выходит, что так и есть :( А в секции HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix у меня еще затаилось Q147222. Что с ним делать?

Чтобы учесть все, придется к анализу ветки HKLM\SOFTWARE\Microsoft\Updates прилепить анализ HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix, а еще вручную вписывать те самые особые обновления из ветки HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.

В таком сл., нужно анализировать все 3 файла:
Код:

regedit /ea %USERNAME%_Updates.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"
regedit /ea %USERNAME%_HotFix.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
regedit /ea %USERNAME%_Uninstall.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

Но, правильно ли это делать? Может просто обновление установлено каким-то нестандартным способом (например, через UpdatePack). При обычной установке этих обновлений-исключений они также прописываются только в Uninstall?

Vadikan 04-11-2006 07:27 506757

Цитата:

Можно указать по какой длине выравнивать названия обновлений - 8 символов по ум. (определяется переменной UPNAMEL).
Извращенцы :)

prokazzza 04-11-2006 10:29 506787

Sanja Alone я посмотрел ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Цитата:

Но, правильно ли это делать?
Посмотри вот прикрепляю файл Uninstall.reg у мя тама действительно перечисленно 130 обновлений.

Нужно типо анализа чтоли продумать в OEM, проводить такой между ветками анализ, например брать из ветки HKLM\SOFTWARE\Microsoft\Updates обновления поставить их в список OEM так чтобы они шли первыми, а далее проанализировать прописанные обновления например из ветки HKLM\SOFTWARE\MicrosoftWindows\CurrentVersion\Uninstall, но так чтобы двойные не вносились, а вносились тока те которых действительно нехватает в списке "Сведенья о поддержке". Потом следующую ветку анализировать например далее HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix отсуда взять недостающие обновления . Тогда уж действительно будут перечислены все обновления которые были внесены в систему.

alcos 04-11-2006 10:30 506788

Vadikan
За что нас так, мы же стараемся как лучше и точнее


Sanja Alone
Q147222 да и чёрт с ним, оно так старо, что я даже найти его не смог у дяди Билла, видимо уже давно заменили новым.

Цитата:

Может просто обновление установлено каким-то нестандартным способом (например, через UpdatePack)
Можно ведь и вручную запустить oeminfo.cmd после установки любого пакета и будет всё прописано как надо.


Vadikan 04-11-2006 12:39 506837

alcos
Цитата:

За что нас так, мы же стараемся как лучше и точнее
Так я ж любя :)

Sanja Alone 05-11-2006 05:56 507122

Новая версия oeminfo.cmd (2006-11-05)

Что изменилось:
  • Учтены обновления, перечисленные в ветке Uninstall (начинающиеся с KB + 6 цифр).
Смотреть
Качать

alcos 05-11-2006 14:53 507232

Вложений: 1
Sanja Alone
Твоя конструкция
Код:

rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist "%CDROM%\I386\winn?.sif" (
    set WINNTSIF=%CDROM%\I386\winn?.sif
) else (
    if defined REGEXE (
        for /F "tokens=3 delims=    " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath') do set SrcP=%%j
    ) else (
        for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath') do set SrcP=%%j
    )
    if exist "!SrcP!\winn?.sif" set WINNTSIF=!SrcP!\winn?.sif
)

для определения пути к дистрибутиву слишком громоздкая и не срабатывает, если в системе стоит два CDROM-а. Определяется путь для переменной например: !SrcP!=D:\WinDistr\1XP1\i386 вместо !SrcP!=E:\WinDistr\1XP1\i386, получается, что первые два символа не заменяются на букву CDROM-а, куда на данный момент вставлен диск и естественно путь получается неверный, соответственно CD-KEY не считывается.
Для чего сделана привязка "Определение версии REG.EXE" к версии файла при определении пути к "winn?.sif" да и далее тоже, я так и не понял, они что по разному инфу с реестра читают или есть другие нюансы? Просто у меня нет английской винды и я этого не знаю. Ведь в реестре путь к i386 прописан в любой винде по ненашему. Сейчас столкнулся с тем, что в реестре путь к дистрибутиву не прописался на виртуалке, может просто из за сбоя, который произошёл у меня.

Я для себя выбрал мой вариант определения, мне кажется, что так проще и всё работает.
Код:

::Считываем всю строку ключа "SourcePath" из реестра и присваеваем её переменной "WINNTSIF"
for /F "usebackq tokens=3 delims=    " %%i in (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath`) do set WINNTSIF=%%i
set WINNTSIF=%WINNTSIF:~2%

::Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist %CDROM%%WINNTSIF%\winn?.sif (
    set WINNTSIF=%CDROM%%WINNTSIF%\winn?.sif
)

Есть ещё одна проблема с правильным определением даты и времени установки системы. Если файл "Oeminfo.cmd" запускается при установке системы, то с этим всё правильно, но, если вы запускаете этот файл на уже давно установленной системе (например после обновления), то и дата и время прописываются сегодняшние, т.е. те, которые на момент запуска установлены в системе. Это есть неправильно. Я тут порылся в реестре и нашёл пару мест с правильными (неизменяемыми) необходимыми данными. Родной параметр даты установки в реестре зашифрован (InstallDate=0х44913fe3(1150369763)), пришлось искать другой подходящий.
Код:

::Считываем дату установки системы
for /F "tokens=3 delims=    " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\WBEM\CIMOM" /v SetupDate') do set DT=%%j
::Считываем время установки системы (тут время в GMT прописано, надо тоже пересчёт сделать)
for /F "tokens=3 delims=    " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\WBEM\CIMOM" /v SetupTime') do set TM=%%j
::Считываем дату установки последнего обновления (это просто пример, реально надо вычислять)
for /F "tokens=3 delims=    " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP3\KB873339" /v InstalledDate') do set UD=%%j

Проблема возникает с вычислением даты последнего установленного обновления. Даты прописываются только в ветке
Код:

HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP3
У меня маловато знаний для того, чтобы из кучи обновлений выбрать самую последнюю дату установки. Вот я и предлагаю знающим (Sanja Alone) идею. Возникает вопрос, а как программы типа Everest и им подобные дату установки вычисляют и ключ продукта?

Один выделенный момент в строке
Код:

echo [Support Information]>> "%OEMFILE%"
if %lang% == 00000419 (
    echo Line!i!=%PN% Professional VLK v%CV% %CSDV% >> "%OEMFILE%"
        set /A i+=1
    echo Line!i!=Версия сборки: %BUILD% >> "%OEMFILE%"
) else (
    echo Line!i!=OS:%PN:Microsoft=% %CSDV:Service Pack=SP% version %CV% build %BUILD%>> "%OEMFILE%"
)

Если убрать пробел перед стрелками >>, то вообще ничего в файл "oeminfo.ini" не выводится для дополнительного окна и кнопка естественно отсутствует!

По прежнему отсутствуют в списке:
MSXML 6.0 Parser (KB925673)
Клиент управления правами Windows (KB839178)
Прячутся тут
Код:

::Считываем из реестра информацию о "MSXML 6.0 Parser (KB925673)" и дописываем в файл Updates.txt
for /F "usebackq tokens=* delims==" %%r in (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{031816E0-7ED4-4F9B-986D-CE9E1A1CC6E5}" /v DisplayName`) do set PS=%%r
echo %PS:~-9,8% >> %HF%\Updates.txt

::Считываем из реестра информацию о "Клиент управления правами Windows SP2 (KB917275)" и дописываем в файл Updates.txt
for /F "usebackq tokens=* delims==" %%r in (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B67DDF3E-93B1-413A-8AB1-72FF48F4CBFE}" /v HelpLink`) do set CL=%%r
echo KB%CL:~-6,8% >> %HF%\Updates.txt

Приведу пример последнего файлика от Sanja Alone немного подправленного и изменённого лично для себя, мне такое оформление больше нравится. Английский вариант я не изменял.

prokazzza 05-11-2006 15:38 507242

alcos

У тя нормальное OEMINFO получается



щас написано 136 обновлений включая написано что WMP11 включен это хорошо
  • WGA WMFDist1 Wudf0100 - вот эту строку в конце я немного непонял???
  • можно убрать это красный фон, а сделать нормально черный
  • вот эта строка чет неправильно выдает инфу - Дата установки последнего обновления: 12/13/2004
  • а кто такой kolobok:)
-------------------------------------------------------------------------------------------------

OEMINFO от Sanja Alone в последних версиях я никакого результата не вижу

Цитата:

Цитата Sanja Alone
Новая версия oeminfo.cmd...................Что изменилось:

да ниче не изменилося как было написано 104 так оно так и осталося!!!

YuriPet 05-11-2006 15:52 507245

prokazzza
Цитата:

да ниче не изменилося как было написано 104 так оно так и осталося!!!
Странно... У меня оба CMD-шника (от Sanja Alone и от alcos) выдают 136 шт. :)
Я уже как-то писал: запусти с ключом "/R".


prokazzza 05-11-2006 16:03 507247

YuriPet

а посмотреть пост 115 :)

YuriPet 05-11-2006 16:11 507249

prokazzza
Да ладно... Думал - может забыл?
По поводу
Цитата:

можно убрать это красный фон, а сделать нормально черный
- убери (закомментируй) строку "Color CB" и усё... :)

sattva 06-11-2006 04:01 507467

alcos

Цитата:

::Считываем всю строку ключа "SourcePath" из реестра и присваеваем её переменной "WINNTSIF" for /F "usebackq tokens=3 delims= " %%i in (`REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath`) do set WINNTSIF=%%i set WINNTSIF=%WINNTSIF:~2%
Я применяю аддон Z_DRV_INST (с копированием дистрибутива т.е. директории i386 в C:\Windows)
Поэтому SourcePath у меня ="C:\Windows" и при запуске твоего Oeminfo.cmd скрипт выдает сообщение:"Не найден файл \Windows\"!!!!

Цитата:

::Считываем из реестра информацию о "MSXML 6.0 Parser
Я этой секции в твоем файле не нашел!!?
И откуда берется переменная %HF%?

Sanja Alone 06-11-2006 04:56 507473

alcos
Цитата:

да и далее тоже, я так и не понял, они что по разному инфу с реестра читают или есть другие нюансы?
Они по-разному выводят - попробуй запустить oeminfo.cmd с англ. reg.exe. Или ты считаешь, что я просто так усложнил код практически одинаковыми строками? :)

Цитата:

По прежнему отсутствуют в списке:
В файле prokazzza, MSXML 6.0 Parser принадлежит ветке {AEB9948B-4FF2-47C9-990E-47014492A0FE}. Выходит, что имя ветки не зафиксировано. Какой тогда смысл вносить подобную инфу при пом. oeminfo.cmd. Между прочим, стандарная утилка от MS systeminfo.exe вообще как-то странно выводит список обновлений - не вдаваясь в тонкости... Да, я так и не видел твоих reg-файлов соотв. веток. Как ты мне предлагаешь анализировать не имея материала?

Цитата:

если вы запускаете этот файл на уже давно установленной системе (например после обновления), то и дата и время прописываются сегодняшние, т.е. те, которые на момент запуска установлены в системе
Это дело вкуса :)

Цитата:

чтобы из кучи обновлений выбрать самую последнюю дату установки
Это довольно сложно, а толку мало.


prokazzza
Цитата:

да ниче не изменилося как было написано 104 так оно так и осталося!!!
Пункт один: сначала анализируем, потом возмущаемся.
Пункт два: с твоими файлами веток Updates и Uninstall вот такой я получил результат при тесте (oeminfo /r):
Код:

[General]
Manufacturer=Sanja Alone
Model=Unattended XP DVD
[Support Information]
Line1=ОС: Windows XP SP 2 версия 5.1 сборка 2600.xpsp.050301-1521
Line2=
Line3=Дата и время установки (обновления): 06.11.2006 (03:44)
Line4=
Line5=Установленные компоненты и обновления (136):
Line6=
Line7=KB319740  KB873339  KB883667  KB884267  KB884575  KB884883
Line8=KB885353  KB885626  KB885835  KB885836  KB885855  KB885894
Line9=KB886612  KB886677  KB886716  KB887078  KB887472  KB887606
Line10=KB887626  KB888111  KB888302  KB888402  KB888656  KB889016
Line11=KB889315  KB889320  KB889673  KB889858  KB890046  KB890831
Line12=KB890859  KB891122  KB891781  KB892313  KB893240  KB893241
Line13=KB893357  KB893756  KB893803  KB895181  KB895316  KB895572
Line14=KB896256  KB896358  KB896414  KB896423  KB896424  KB896428
Line15=KB896626  KB897338  KB897586  KB897663  KB898461  KB898549
Line16=KB898900  KB899271  KB899587  KB899589  KB899591  KB900399
Line17=KB900485  KB900725  KB901017  KB901214  KB902344  KB902400
Line18=KB903234  KB904412  KB904706  KB904942  KB905414  KB905749
Line19=KB906569  KB907265  KB907658  KB907865  KB908519  KB908521
Line20=KB908531  KB909095  KB909520  KB909608  KB910437  KB911280
Line21=KB911562  KB911565  KB911567  KB911854  KB911927  KB912817
Line22=KB912919  KB913296  KB913538  KB913580  KB914388  KB914389
Line23=KB914841  KB915865  KB916595  KB916846  KB917344  KB917422
Line24=KB917537  KB917730  KB917953  KB918005  KB918093  KB918439
Line25=KB918766  KB918837  KB918899  KB919007  KB920214  KB920670
Line26=KB920683  KB920685  KB920872  KB921398  KB921401  KB921413
Line27=KB921883  KB922582  KB922616  KB922819  KB923191  KB923414
Line28=KB923996  KB924191  KB924496  KB924867  KB924941  KB925486
Line29=WGA      WMFDist1  wmp11    Wudf0100

Если ты как-то по-другому тестируешь (или не с теми файлами, что здесь выложил), то опиши методику... Если же нет, то прекрати поток обвинений!

alcos 07-11-2006 12:47 508039

prokazzza
Цитата:

alcos
У тя нормальное OEMINFO получается
щас написано 136 обновлений включая написано что WMP11 включен это хорошо
Это спасибо должно быть адресовано Sanja Alone, я только оформил под себя, мне так больше нравится.
Цитата:

WGA WMFDist1 Wudf0100 - вот эту строку в конце я немного непонял???
Это вопрос тоже к Sanja Alone, он рулит вычислениями обновлений.

YuriPet
Цитата:

Странно... У меня оба CMD-шника (от Sanja Alone и от alcos) выдают 136 шт.
Действительно ничего не изменилось, так как я менял в файле от Sanja Alone только оформление произвольного текста и выбор даты, времени установки системы и последнего обновления. Вообще инфу о дате можно брать из .NET Framework вреестре, там формат хороший, да и все его ставят, но, вероятно, не все при установке. Время вообще можно обычное брать - это не критично, как дата.
А разница в показаниях 104 и 136 достигается просто - я по умолчанию включил следующий параметр в файле "Oeminfo.cmd", так более информативно, потому что не все обновления прописывают свои каталоги безопасности в определённом месте.
Код:

::Использовать ли реестровый метод для составления списка апдейтов (1 - да; 0 - нет)
set REGMODE=1

prokazzza
Цитата:

вот эта строка чет неправильно выдает инфу - Дата установки последнего обновления: 12/13/2004
Правильно, неверно, внимательно прочти мой пост 124, там описана эта проблема. Я просто пример привёл, а для осуществления этой идеи надо думать. Можно пока вписывать обычную дату или закомментировать строку.
а кто такой kolobok - нарисуй в своём файле что хочешь:)

sattva
Цитата:

::Считываем из реестра информацию о "MSXML 6.0 Parser
Я этой секции в твоем файле не нашел!!?
И откуда берется переменная %HF%?
Этой секции действительно нет
Цитата:

Sanja AloneВ файле prokazzza, MSXML 6.0 Parser принадлежит ветке {AEB9948B-4FF2-47C9-990E-47014492A0FE}. Выходит, что имя ветки не зафиксировано. Какой тогда смысл вносить подобную инфу при пом. oeminfo.cmd
Переменная %HF% есть не что иное, как:
Код:

set HF=%SystemDrive%
Sanja Alone
Цитата:

Они по-разному выводят - попробуй запустить oeminfo.cmd с англ. reg.exe. Или ты считаешь, что я просто так усложнил код практически одинаковыми строками?
Так я и писал выше: "Просто у меня нет английской винды и я этого не знаю." Таперь узнал. Если не затруднит, то приведи тут пример чтения одной строки разными версиями reg.exe. :help:

Вообще, конечно, хотелось бы довести этот файлик до совершенства, но слишком сложно, у одних работает, у других несовсем, да и дядя Билл кидает все записи в реестре беспорядочно.


alcos 07-11-2006 15:58 508162

Вложений: 1
Я тут ещё чуток подправил (исправил) в файлике оформление даты и время, более приятный и правильный вид.

Sanja Alone 08-11-2006 05:50 508447

alcos
Цитата:

приведи тут пример чтения одной строки разными версиями reg.exe
Да практически любой if в моем oeminfo и есть примером. Но, как можно увидеть, необходимость в разделении на версии reg.exe возникает только при определении в кач-ве разделителей подстрок в команде for пробелов/табуляций. Вот, что выводит рус. и англ. версии reg.exe при выполнении команды:
Код:

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath
рус. REG.EXE версии 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158) (Windows XP SP2 VL):
Код:

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    SourcePath  REG_SZ  G:\SETUP\XP\UNATDRCT\I386

англ. REG.EXE версии 5.2.3790.1830 (srv03_sp1_rtm.050324-1447) (Windows Server 2003 SP1):
Код:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    SourcePath    REG_SZ    E:\SETUP\2K3\UNATTEND\I386

Бросается в глаза наличие версии файла в выводе русского reg.exe + разное к-во пробельных символов (и их вид - где-то это пробелы, а где-то табы). Короче говоря, обобщить что-либо здесь сложно - нужно тестить.


prokazzza
Цитата:

WGA WMFDist1 Wudf0100 - вот эту строку в конце я немного непонял???
А что тут не ясно? Сам же задавал вопрос, на к-рый я ответил однозначно - "Из ветки HKLM\SOFTWARE\Microsoft\Updates - ВСЕ!". Если не нравятся обрезанные названия н-рых обновлений, то измени значение переменной UPNAMEL с 8 на, к примеру, 11 - этого вполне хватит.

В принципе, у меня даже была идея доставать описания обновлений из параметров Description и/или PackageName. Вот тестовый код для Description-ов (для PackageName будет тоже самое) - выводит описания в файл up.txt (ес-но, учтены не все обновления):
Код:

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for /F "tokens=5* delims=\" %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Updates" /s ^| findstr /i /v "REG_ FileList"') do if %ERRORLEVEL%==0 (
        for /F "tokens=* delims=\" %%m in ('echo %%j\%%k^| findstr /i "[\\].*[\\]"') do (
                set regkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\%%m
                for /F "tokens=3 delims=        " %%g in ('reg query "!regkey!" /v Description 2^>nul') do (
                        echo %%g>>up.txt
                )
        )
)

Но, тут есть серьезная проблема: для одних обновлений определен только параметр Description, для других - PackageName, для третьих - оба (причем с различным содержимым). Нормально реализовать анализ всего этого посредством cmd-файла крайне тяжело. Желающие могут поиграться :)

Dark Engel 01-02-2007 10:27 544379

Использовал скрипт уважаемого Sanja Alone. Отрабатывает хорошо но.... поля проставляются почему то неправильно :( На картинке внизу это видно.

prokazzza 01-02-2007 23:22 544666

Dark Engel Почему вы не читали FAQ, я же просил прочитать его перед применением OEMINFO.

Dark Engel 02-02-2007 01:23 544684

prokazzza
посмотрите пожалуйста на рисуно еще раз....
Faq я прочитал
set MANUFACTURER=prokazzza (это будет имя сборщика)
set MODEL=Workgroup (это будет рабочая группа)
Предположим это исправится. А Ram и тип системы?

Opolon 13-02-2007 09:53 549250

Думаю что вопрос задаю по адресу и надеюсь что вы сможете мне помочь ?
есть Arun.bat который запускается из "C:\WINDOWS\Temp"
Код:

@CLS
@echo off
move oeminfo.cmd C:\WINDOWS\system32
move oemlogo.bmp C:\WINDOWS\system32
%systemroot%\system32\oeminfo.cmd /install /silence
del %systemroot%\Temp\Arun.bat

Здесь oeminfo.cmd
Здесь то чего пытаюсь добиться
Проблема состоит в том что данный батник "Arun.bat" не хочет выполнять команду oeminfo.cmd или игнорирует команду DEL при небольших изменениях при которых отлично проходит работа oeminfo.cmd
Помогите пожалуйста !!![/quote]

ProkVS 13-02-2007 14:39 549411

Opolon
Попробуй так:
Код:

MOVE /Y путь\oeminfo.cmd C:\WINDOWS\system32
MOVE /Y путь\oemlogo.bmp C:\WINDOWS\system32
start /wait %systemroot%\system32\oeminfo.cmd
del %systemroot%\Temp\Arun.bat
Pause
Exit

Если всё пройдет нормально удали Pause в конце, а если не нормально - увидишь что именно стопарит!

Opolon 13-02-2007 15:14 549434

ProkVS
В том то вся и загвоздка что файл oeminfo.cmd должен запускаться не через start /wait как указали вы а через /install /silence (это обязательно) но почемуто при таком условии не хочет работать следующая команда "del %systemroot%\Temp\Arun.bat"
Может у кого есть правильный вариант как это воплотить в жизнь !?

файлы oeminfo.cmd и oemlogo.bmp лежат изначально в корне с батником Arun.bat

ProkVS 13-02-2007 15:29 549450

Подскажите откуда такая острая необходимость ключах /install /silence ?
Просто я прекрасно справляюсь без этоких необходимостей и имею то, чего ты хочешь добится :)

Opolon 14-02-2007 08:25 549746

ProkVS
Дело в том уважаемый, что когда я запускаю команду "oeminfo.cmd" с параметрами "start /wait" из батника, у меня вылезает консоль которая непонятно чего прося висит пока её не выгрузишь, а если запускать с параметрами "/install /silence" всё проходит тихо и незаметно для глаза.
Вчера весь вечер потратил на поиск ресурса из которого я взаимствовал способ "/install /silence" но так ничего и не нашёл поэтому откуда такая острая необходимость данного ключа кроме того что описал выше не могу привести.
Не примите за флейм !!! Просто всё получается как по маслу а вот с этими командами в батнике невезуха прям ! :)

ProkVS 14-02-2007 10:13 549772

Opolon
Вобщем хочешь ты или нет, а я тебе всё равно помогу, хе-хе :)
Вот здесь лежить 7z архив, внутри него RAR SFX с моими oeminfo.cmd и oemlogo.bmp, замени на свои и запускай откуда угодно (RunOnceEx, cmdlines...), для пробы можешь запустить на установленной ОС тоже сработает! Работает следующим образом: разворачивается во временную папку %TEMP% (т.е. после отработки самоликвидируется), далее запускается сценарий:
Код:

cmdow @ /HID
xCOPY oemlogo.bmp "%systemroot%\system32\" /y /q /s
OEMINFO.CMD
exit

Всё происходит в тихом режиме!
Пробуй!



Opolon 14-02-2007 19:11 549999

ProkVS
Я очень благодарен вам за ваш труд!!!
Но к данному способу я пришёл ещё пару дней назад!
Мне именно хотелось тот способ который я описывал выше.
И понять причину проблему

ProkVS 14-02-2007 19:37 550005

Opolon
Вот чорт побери, мы тут цель достигаем или решаем почему не работают нерабочие варианты!? Короче я умываю руки :)

Vadikan 16-02-2007 02:09 550642

Opolon
Вы можете пояснить, откуда вы берете ключи командной строки /install /silence и что они означают применительно к данному командному (cmd) файлу?

Opolon 16-02-2007 07:34 550676

Я уже писал

Остановился на способе с SFXом но душа болит от того что первый способ так и не прошёл !!!

Vadikan 16-02-2007 08:24 550693

Opolon
Я уже читал, но так и не понял, с чего вы взяли, что .cmd файл воспринимает такие ключи (поэтому попросил пояснить). Фантазии, конечно, дело хорошее, но надо их хоть как-то обосновывать...

Opolon 16-02-2007 18:25 550967

Vadikan
Вот мой "Arun.bat"

Код:

cmdow @ /HID
@cls
@echo off
attrib +R +S +H "%systemdrive%\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\guest.bmp"
del/s "%systemdrive%\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\*.bmp"
del/s "%systemdrive%\Documents and Settings\All Users\Документы\Мои рисунки\Образцы рисунков\*.jpg"
del/s "%systemdrive%\Documents and Settings\Адресат.MAPIMail"
del/s "%systemdrive%\Documents and Settings\Сжатая ZIP-папка.ZFSendToTarget"
del/s "%systemdrive%\Documents and Settings\Образцы рисунков.lnk"
del %systemroot%\Media\*.wav
del %systemroot%\Media\*.mid
del/s %systemroot%\system32\*.scr
del %systemroot%\Web\Wallpaper\*.jpg
del %systemroot%\Web\Wallpaper\*.bmp
del %systemroot%\*.bmp
move Pic-*.bmp "%systemdrive%\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\Default Pictures"
move Root.bmp "%systemdrive%\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures"
move "Администратор.bmp" "%systemdrive%\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures"
move *.wav %systemroot%\Media
move oeminfo.cmd %systemroot%\system32
move oemlogo.bmp %systemroot%\system32
move *.scr %systemroot%\system32
move *.jpg %systemroot%\Web\Wallpaper
%systemroot%\system32\oeminfo.cmd /install /silence

стоит в конце добавить
Код:

echo.
del %systemroot%\Temp\Arun.bat
Exit

выходит ошибка не могу найти oeminfo.cmd (хотя он там есть!)
а ставишь "start /wait %systemroot%\system32\oeminfo.cmd" не срабатывает удаление даже с ключём "Y|del" и даже если перед ним вписать "pause" и плюс пустая консоль вылезает и ждёт какойто команды


не та которая после команды "Pause"

Vadikan 16-02-2007 19:11 550984

Попробуйте
Код:

...
move *.jpg %systemroot%\Web\Wallpaper
call %systemroot%\system32\oeminfo.cmd
del %0

Из oeminfo.cmd уберите Exit

Maledictus 26-02-2007 22:16 555679

Человеки!Я need help!Начал создавать свой загрузочный диск и запоролся на OEM-дирах.Че енто такое и надо ли их самому создавать или они должны быть на диске?Если должны быть то почемуто у мя ни чего нет!!!!Поможите кто чем может.Очень нуна!!!!

ProkVS 27-02-2007 08:16 555808

Maledictus
Начинать надо с букваря, тогда процесс пойдет намного быстрей!

smoof 17-03-2007 00:24 562825

Вложений: 3
Сорри если повтаряюсь но у меня такая проблема после добавления ОЕМ информации получается примерно такая картина скрины прикрепил, так вот хотелось бы чтоб список обновлений начинался с КВ* ну а потом? уже все остальное.
Использовал OEMINFO.cmd на T12 (файл прикрепил) предоставленный Sanja Alone за что ему огромное спасибо. Вроде там эта функция должна быть реализована, но она почему-то не работает либо я что-то делаю не так.

alcos 19-03-2007 03:26 563514

smoof
К сожалению это у всех так, попробуй взять более старую версию OEMINFO.cmd, где ещё не было сделано такой обработки реестра. Почитай внимательно всю тему, посмотри скриншоты и выбери подходящий для твоих нужд файл или код (кодов полно) файла.
Удачи

YuraP 22-08-2007 19:23 631550

Цитата:

Цитата alcos
попробуй взять более старую версию OEMINFO.cmd

просьба - в первом посте создайте пожалуйста на все рабочие варианты файлов
чтобы не искать по всем страницам...

truvo 31-12-2007 02:53 706826

Объясните несведущему по-простому, что за строка в OEMINFO.cmd:

"Использовать ли реестровый метод для составления списка апдейтов"

Когда использовать, когда нет?

alcos 03-01-2008 20:06 708347

truvo,
Цитата:

Цитата truvo
"Использовать ли реестровый метод для составления списка апдейтов" »

Это означает, что список установленных обновлений берётся с реестра винды, а не с диска из папки с обновлениями.

truvo 03-01-2008 22:27 708427

Ну конечно, я знаю, что реестр - это в системе. Я задал другой вопрос: когда есть смысл использовать, когда не надо?

Sanja Alone 05-01-2008 12:18 709381

Цитата:

Цитата YuraP
пожалуйста на все рабочие варианты файлов
чтобы не искать по всем страницам... »

В вике можно увидеть все версии на страничке история

Цитата:

Цитата smoof
так вот хотелось бы чтоб список обновлений начинался с КВ* ну а потом »

Это очень легко реализовать. Нужно заменить строку:
Код:

for /F "tokens=2 delims=[]" %%j in ('set kb[ ^| sort') do (set kbname=%%j&& call :myprint)
на
Код:

for /F "tokens=2 delims=[]" %%j in ('set kb[ ^| sort /+2') do (set kbname=%%j&& call :myprint)
Т.о., при сортировке сравнение будет начинаться со второго символа каждой строки (читай с буквы B). Строки меньше чем 2 символа собираются перед всеми остальными строками (в данном сл. это нереально). В рез-те все KB окажутся в начале.

Цитата:

Цитата truvo
Я задал другой вопрос: когда есть смысл использовать, когда не надо? »

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

МИШАНЧИК 11-01-2008 10:10 714015

Подскажите пожалуйста как сделать картинки bmp в OEMINFO, чтобы они были на прозрачном фоне. С png то всё ясно. Но ведь в данном случае нужно только bmp.
Заранее спасибо.

YuriPet 11-01-2008 20:11 714427

Цитата:

Цитата МИШАНЧИК
Подскажите пожалуйста как сделать картинки bmp в OEMINFO, чтобы они были на прозрачном фоне. С png то всё ясно. Но ведь в данном случае нужно только bmp. »

Рекомендую - IconLover

МИШАНЧИК 12-01-2008 04:13 714690

YuriPet, спасибо. Скачал. Но так и не понял как в ней сделать картинки bmp на прозрачном фоне?
Подскажите пожалуйста!

МИШАНЧИК 16-01-2008 07:39 718038

YuriPet, не молчите. Пожалуйста подскажите как сделать картинки bmp на прозрачном фоне?

YuriPet 16-01-2008 08:46 718061

МИШАНЧИК, Извините - посчитал, что все же вы разобрались самостоятельно... :)
Вначале находим требуемую картинку (или создаем в Photoshop, другом графическом редакторе) и сохраняем ее в формате PNG.

Открываем этот PNG-файл с помощью IconLover, а в нем далее: "File" -> "Save as...", выбираем "Тип файла:" -"Windows Bitmap (*.bmp)", изменяем (при желании) "Имя файла:", жмем "Сохранить". Все! ;)

Можно просто открыть понравившуюся картинку в любом формате тем же IconLover, выбрать инструмент "Flood Fill (F)" и залить цветом "Transparent" (назначен по умолчанию правой кнопке мышки) участки, которые д.б. прозрачными.

Прошу обратить внимание, что сохранять BMP-файл нужно в 32-битном формате!
Если вы открыли файл в формате 24 или 8 бит, то нужно создать "New Image Format" - "True Color + Alpha (32-bits)" и сохранять именно его.

МИШАНЧИК 17-01-2008 07:59 718890

YuriPet, большое спасибо. Буду пробовать.

primewar 24-01-2008 21:59 724868

YuriPet, Я так понял, таким же образом можно редактировать иконки на сетап биллборде? Посмотри пожалуйста здесь: Биллбоард
Т.е. png-иконку сохранить через IconLover и можно использовать?

YuriPet 24-01-2008 23:47 724942

primewar
Нет, там другой принцип (метод).
Альфа-канал не используется, а просто делается "прозрачным" (правильнее сказать - "невидимым") цвет, заданный (если используешь WinntbbuED.exe) в "Edit" -> "Colors" -> "Step Image Transparency".
Чаще всего в качестве "прозрачного" используется цвет с параметрами RGB (255, 0, 255).
Одним из главных недостатков этого принципа (метода) является принципиальная невозможность создания "полупрозрачных" участков.
Естественно, при этом рисунки сохраняются в формате 8, максимум 24-бит.

primewar 25-01-2008 00:40 724973

YuriPet, То, что система считает розовый цвет прозрачным я слышал, меня интересует немного другое: после сохранения в .bmp белый (розовый) контур станет однородным, или же по-любому придётся корректировать?
Цитата:

Цитата YuriPet
(если используешь WinntbbuED.exe) в "Edit" -> "Colors" -> "Step Image Transparency" »

Так и делаю, но вокруг иконки остаются "рваные" края.....

YuriPet 25-01-2008 01:05 724983

primewar
"Рваные" края - следствие того, что в иходном изображении, скорее всего, использовалась полупрозрачность ("мягкие" тени и т.п.).
Из-за этого края изображения не имеют резкой границы, а в этом методе такая ситуация крайне нежелательна.
Проверить легко: выбери цвет, которого на рисунке точно нет, и выполни "заливку", начиная от края всего изображения.
Цитата:

Цитата primewar
...после сохранения в .bmp белый (розовый) контур станет однородным, или же по-любому придётся корректировать?

Сам-собой мало что делается в мире... :rolleyes:
Скорее всего придется "вручную" заливать всё, что д.б. прозрачным... ;)
P.S. Если исходным изображением и вправду была иконка, то проще (и правильней) использовать 256-цветную ее часть.

Tutle 20-02-2008 13:57 744639

Ребят что-то я не понял как добавлять OEM в авто-установку обьясните кто может поконкретней

Miroslaw 11-05-2008 04:47 799370

ANDYru,
Подскажите, пожалуйста, как можно изменить информацию о том какой процессор установлен в системе?.
Например, стоит Pentium а написать вместо него Xeon или наоборот.

skirsan 27-05-2008 04:37 811598

Подскажите, пожалуйста, как исправить 2002 на 2008 в свойствах компа.

nod201 17-07-2008 20:06 854540

кто не будь может создать на руском языке вот этот топик прозрачный фон ничего не смыслю на английском языке
плизззззззззззз очен надо

e-not1989 29-07-2008 11:54 863453

Вложений: 1
Во время запуска этого батника на T13 появляется консольное окно, из-за которого установка приостанавливается. Приходится вручную писать exit для закрытия этого консольного окна и продолжения установки. Пробовал в oeminfo.cmd вписать в конце EXIT - не помогло. Как справиться с этим?

alexy 31-07-2008 15:07 865177

Цитата:

Цитата YuriPet
Прошу обратить внимание, что сохранять BMP-файл нужно в 32-битном формате! »

Ох, как тут вводят в заблуждение, мягко говоря! Вот абсолютно правильное решение:
Цитата:

To make a transparent bitmap you must make sure that the bitmap has been converted to Indexed 256 colour. 24bit Bitmaps will not make a transparent image. Make sure that pixel (0,0) in the top left most part of the picture has the colour you want to be transparent.

If you have a background colour that you do not want to be transparent put another colour at pixel (0,0), preferably 1 that doesn't appear in the rest of the image. Some image editors allow you to add a colour to the palette if needed.

In some cases setting colour 0 in the colour index also can help.
В вольном переводе:
Чтобы получить прозрачный bmp, изображение должно быть конвертировано в "Индексированные 256 цветов". 24-битные изображения не дают прозрачной картинки. Убедитесь, что пиксель (0,0) (верхний левый) имеет цвет, который вы ходите назначить прозрачным.
Перевода этого думаю достаточно.

YuriPet 31-07-2008 19:16 865342

Цитата:

Цитата alexy
Ох, как тут вводят в заблуждение, мягко говоря! Вот абсолютно правильное решение... »

А слабо прочитать чуть ниже?
Цитата:

Цитата YuriPet
Чаще всего в качестве "прозрачного" используется цвет с параметрами RGB (255, 0, 255).
Одним из главных недостатков этого принципа (метода) является принципиальная невозможность создания "полупрозрачных" участков.
Естественно, при этом рисунки сохраняются в формате 8, максимум 24-бит.»

Это о том "решении" которое вы привели.
Так что, ИМХО, - "Кому нравится поп, а кому попадья..." ;)

truvo 30-10-2008 04:44 937655

Распоследний пересобранный дистрибутив с всё тем же oeminfo.cmd - вдруг я заметил, что кнопка "Сведения о поддержке" в установленной ОС отсутствует. А прежде была!

truvo 03-11-2008 13:33 941563

Поднимаю свой вопрос, как разрешено, по истечении трех суток. Итак, подробнее. Я применял выложенный на сайте oszone oeminfo.cmd - тот, который в шапке. Сначала с дистрибутивом XP SP2, потом с дистрибутивом XP SP3. После очередной переустановки ОС с пересобранного дистрибутива вдруг заметил, что кнопка "Сведения о поддержке", по которой можно было перейти к списку установленных обновлений и аддонов, - отсутствует!
На каком этапе обновления дистра это произошло, почему - не знаю. Но с момента создания своего файла oeminfo.cmd я не вносил в него никаких исправлений. И кнопка была, а потом не стало... Никто не объяснит?

Добавлю, что после установки XPSP3 на ноут на днях я наблюдал такую картину: кнопки "Сведения о поддержке" нет, а под данными о процессоре и памяти - какая-то совершенно незаказанная мной фраза, неоконченная, вместилась только пара слов, да и то второе слово оборвано. Первое слово, кажется, "Физические", а следующее (говорю уже менее уверенно), кажется, "поддерживаемые", а к чему это, откуда взялось, не знаю...

Sanja Alone 06-11-2008 22:36 945403

truvo
Цитата:

Добавлю, что после установки XPSP3 на ноут на днях я наблюдал такую картину: кнопки "Сведения о поддержке нет
Кнопка должна быть если файл %systemroot%\system32\oeminfo.ini существует и содержит как минимум 2 непустых параметра в секции General - Manufacturer, Model, а также Line1 в секции Support Information:
Код:

[General]
Manufacturer=some text
Model=some text
[Support Information]
Line1=some text

Цитата:

под данными о процессоре и памяти - какая-то совершенно незаказанная мной фраза, неоконченная, вместилась только пара слов, да и то второе слово оборвано. Первое слово, кажется, "Физические", а следующее (говорю уже менее уверенно), кажется, "поддерживаемые", а к чему это, откуда взялось, не знаю...
Надпись на английском звучит так: "Physical address extension" /Расширение физических адресов/ - определяется параметром /PAE в файле boot.ini. Никакого отношения к oeminfo.ini не имеет; подробнее - здесь

truvo 07-11-2008 01:43 945528

Вы будете смеяться, но только что сравнил по содержимому в тотал-коммандере два файла oeminfo.cmd - мой и исходник Sanja Alone. Кроме имен производителя и модели, которые благополучно отображаются в свойствах системы, - никаких отличий! А кнопки "Сведения о поддержке" у меня в итоге нет!!! Может, дело в каких-то фишках SP3? Ну ответьте хоть кто-нибудь?

Цитата:

Цитата Sanja Alone
Надпись на английском звучит так: "Physical address extension" /Расширение физических адресов/ - определяется параметром /PAE в файле boot.ini. Никакого отношения к oeminfo.ini не имеет; подробнее - здесь »

По указанной вами ссылке есть такая фраза
Цитата:

В Windows Server 2003 PAE включается автоматически, только если сервер использует устройства памяти, допускающие подключение в процессе работы. В системах, поддерживающих подобные устройства, ключ /PAE указывать не обязательно. В остальных случаях для использования памяти за пределами 4 ГБ необходимо указать в файле Boot.ini ключ /PAE.
Но я не указывал такой ключ, тупо установил XPSP3 (а не Server 2003 - в статье вроде о других виндах написано?). Тогда откуда у меня эта строка?

Drinko 07-11-2008 02:47 945547

Цитата:

Цитата truvo
только что сравнил по содержимому в тотал-коммандере два файла oeminfo.cmd - мой и исходник Sanja Alone. »

А текст в кавычки ставили?
Код:

[General]
Manufacturer="some text"
Model="some text"
[Support Information]
Line1="some text"

PS Попробуйте разместить oeminfo.ini в %systemroot%\System

truvo 07-11-2008 03:17 945554

Drinko, в руководстве на сайте написано, что в случае использования командного файла ini-файл не нужен, он генерируется автоматически. Вот сейчас сижу и тупо запускаю командный файл - сначала чужой, потом мой. В первом случае кнопка появляется, во втором нет, остальная инфа в свойствах системы на месте в обоих случаях. Чудеса!

Drinko 07-11-2008 03:24 945558

truvo, Прикрепите свой файл, посмотрим...

truvo 07-11-2008 03:36 945562

Пожалуйста. Ага, вот еще - убрал при сравнении в Тотале галочки с "Игнорировать повтор пробелов" и "игнорировать частые строки", теперь различий не 0, а 19 - но дальше что смотреть - я не понимаю. Но мой прошлый файл и только что скачанный по-новой исходник с исправленными на свои именем производителя и моделью имеют подозрительно разный размер - различие на 1000 кб примерно.

Drinko 07-11-2008 04:07 945567

truvo, set MANUFACTURER="Сборка TRUVO" (русские символы должны быть в кавычках)

truvo 07-11-2008 04:09 945568

Drinko, так с этим-то проблем нет! Хоть в кавычках, хоть без - слова эти на месте!

Drinko 07-11-2008 04:28 945573

truvo,
Код:

rem язык (419 - рус.), а также название, пакет обновлений, версия и сборка ОС
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции для
rem русской версии REG.EXE и только пробел для английской

может в этом дело? (у Вас там пробелы)

truvo 07-11-2008 04:48 945577

Ладно, фиг с ним, простите за хлопоты, проще взять новый файл, чем понять, что я намудрил со старым...

Sanja Alone 07-11-2008 10:40 945700

Цитата:

Цитата truvo
проще взять новый файл »

По сути:

Из простого сравнения моего рабочего файла и приаттаченного в теме ничего сказать нельзя - вроде все нормально.
Но на практике при запуске приаттаченного файла получаем ошибку:
Код:

L:\>Oeminfo.cmd /r
Непредвиденное появление: (.

Но, сравнив файлы бинарно видно, что наблюдается некая каша с пробельными символами - табы вместо пробелов. В н-рых местах это критично, следовательно получаем нерабочий файл. Чем со всем этим разбираться, как уже было верно подмечено, проще взять оригинальный файл и внести в него желаемые изменения снова (причем использовать текстовый редактор, к-рый по ум. не преобразует пробельные символы как ему угодно!).

Цитата:

Цитата truvo
Может, дело в каких-то фишках SP3? »

Не-а, у меня тоже сейчас SP3 (это можно увидеть кликнув на ссылочку Конфигурация под аватаркой; кстати, весьма полезная фича для хардварных подфорумов, если содержит актуальную инфу ес-но)

Цитата:

Цитата Drinko
="Сборка TRUVO" (русские символы должны быть в кавычках) »

Этого не требуется, достаточно чтобы файл был в кодировке win-1251

Pozia 07-11-2008 12:27 945792

Помогите пожалуйсто. Какие строки нужно удалить в OEMINFO.cmd чтобы не было строки:

Установленные компоненты и обновления
....

и всех обнавлений.

Все остальное пусть будет. Если можно прикрепите исправленный OEMINFO.cmd. Спасибо

truvo 07-11-2008 14:36 945929

Цитата:

Цитата Sanja Alone
причем использовать текстовый редактор, к-рый по ум. не преобразует пробельные символы как ему угодно! »

Не посоветуете конкретно, какой (какие)? Я обычно пользуюсь AkelPad из самлабовской сборки Total Comm. Кстати, в вышеописанном моем случае я мог (гипотетически) когда-то проделать с файлом такую операцию: сохранить в кодировке 866, а потом опять в 1251 - при этом не могла ли образоваться
Цитата:

Цитата Sanja Alone
некая каша с пробельными символами »


Sanja Alone 07-11-2008 15:24 945991

Цитата:

Цитата truvo
Не посоветуете конкретно, какой (какие)? Я обычно пользуюсь AkelPad »

Я обычно при написании cmd-файлов пользуюсь встроенным редактором Far-а (для удобной подстветки синтаксиса у меня подключен плагин colorer); при написании vbs скриптов - TextPad 5.x (многие любят Vbsedit, но я привык к textpad-у); для AutoIt - SciTE (здесь без вариантов)

Цитата:

Цитата truvo
в кодировке 866, а потом опять в 1251 - при этом не могла ли образоваться »

Не думаю, скорее всего в akelpad настроен автоматический реплейс пробелов табами или наоборот. Вообще, трудно сказать. Обычно проблемы могут быть при преобразованиях unicode - ansi - unicode, а здесь вроде ситуация попроще.

truvo 09-11-2008 02:54 947478

Напомните, мне, пожалуйста, - если я запускаю на уже устновленой системе файл OEMINFO.cmd и в результате в "Сведениях о поддержке" вижу список обновлений, но не вижу там аддонов - это нормально, так и должно быть?

Drinko 09-11-2008 03:35 947499

Цитата:

Цитата truvo
не вижу там аддонов - это нормально, так и должно быть? »

Да, ведь аддоны это не обновления Windows ;)

truvo 09-11-2008 03:42 947501

Drinko, и несмотря на это, во всяком случае после автоустановки, аддоны - кажется, не все, но некоторые - например, IE7, WMP, nero - я лично наблюдал в этом окне рядом с обновлениями.
Вы, видимо, не в курсе... Вопрос я задаю потому, что не знаю - может, они прописываются в oem-информации только на этапе установки системы?

YuriPet 09-11-2008 03:46 947502

truvo, а вы не видите разницы между понятием "аддон" и понятием "обновление, оформленное в виде аддона"? ;)

truvo 09-11-2008 14:38 947753

YuriPet, а не могли бы вы ответить на вопрос прямо? Без хитреньких глазиков в смайлике? Я просто пробую отредактированный cmd-файл на живой системе и думаю, изменится ли список обновлений (добавятся ли в него кое-какие аддоны), когда доберусь до виртуалки. Причем ответ на свой вопрос я уже видел на форуме, но не помню где и, следовательно, не могу найти.

YuriPet 09-11-2008 15:32 947784

truvo
Мне кажется, если вы внимательно (особенно, комментарии) просмотрите http://wiki.oszone.net/index.php/Изм...OEM_информации ,
то вам станет ясно, что:

1. OEMINFO.cmd предназначен для формирования oeminfo.ini и информации в нем только об установленных (зарегестрированных) обновлениях/дополнениях от Microsoft.

2. Отображение других обновлений/дополнений возможно только в случае изменения алгоритма работы (маска и т.д.), заложенного в OEMINFO.cmd.

3. Понятие "аддон" при создании (модификации) алгоритма вообще не использовалось!

truvo 09-11-2008 18:20 947888

YuriPet,
Цитата:

Цитата truvo
но некоторые - например, IE7, WMP, nero - я лично наблюдал в этом окне рядом с обновлениями »

И это правда. Вот, кстати:
Цитата:

Цитата Sanja Alone
rem Мне интересно видеть все, что установилось из каталога SVCPACK,
rem поэтому маску KB*.exe я заменил на *.exe »


YuriPet 09-11-2008 22:58 948113

truvo
Скажем так: IE7 и WMP там и должны быть, поскольку они являются обновлениями от Microsoft, а вот каким образом туда попал Nero - надо спрашивать у того, кто вносил изменения в ваш OEMINFO.cmd ;)
Сообщение Sanja Alone, на которое вы ссылаетесь, только подтверждает сказанное мной ранее (п.2) и, кроме того, оно датировано 11-06-2005, а с тех пор ой как много воды утекло...
Или вы используете именно тот вариант?

truvo 10-11-2008 01:55 948214

Цитата:

Цитата YuriPet
Или вы используете именно тот вариант? »

Я использую последний вариант, выложенный на форуме, впрочем, он уже давно не изменялся, и в нем сказано:
Цитата:

rem каталог с апдейтами и маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
if defined CDROM (
set UPDATESDIR=%CDROM%\I386\SVCPACK
set UPDATESMASK=*.*
Из чего я делаю вывод, что после установки ОС на виртуалку или на реальный комп у меня будут присутствовать в списке обновлений Windows, кроме обновлений KB****** также и Nero, и Apollo, и Opera, и AntiSpy, и кое-что еще... То, что находится на компакте в каталоге SVCPACK, разумеется, не могло найтись при запуске командного файла с харда на живой системе.

YuriPet, спасибо за то, что своими неправильными ответами вы натолкнули меня на правильный.

YuriPet 10-11-2008 03:05 948226

truvo,
Ну что ж... Я рад, что все же помог вам.

Хотя для меня фраза: "...у меня будут присутствовать в списке обновлений Windows ... и Nero, и Apollo, и Opera,..." звучит "немножко по-дебильному".
(у нас в Харькове с некоторых пор такое выражение стало "крылатым", так что прошу не обижаться) :)

На мой взгляд, "компоненты и обновления Windows" и "программы сторонних разработчиков" это "две очень большие разницы".

truvo 10-11-2008 11:30 948399

Может быть, Sanja Alone подразумевает под Windows данную сборку.

truvo 24-11-2008 14:58 962030

Можно ли изменить текст (надпись) на кнопке "Сведения о поддержке"?

D_Master 24-11-2008 16:03 962103

truvo, да, нужно подредактировать диалог №101 файла sysdm.cpl:


truvo 24-11-2008 19:38 962350

D_Master, а с помощью чего? Если это какой-то "редактор ресурсов" - я ими никогда не пользовался...

D_Master 24-11-2008 20:23 962397

truvo, Restorator

truvo 24-11-2008 20:53 962435

D_Master, интуитивно пойму в моём случае, что да как??

D_Master 24-11-2008 21:07 962461

truvo, без сомнений ;)
Главное - не сохранять поверх системных файлов, лучше в сторонку сначала, потом тестировать и, если работает, заменять ;)

Drongo 24-11-2008 21:23 962483

D_Master,
Цитата:

Цитата D_Master
truvo, без сомнений »

Это вам понятно интуитивно. ;) А truvo, нужно что-нибудь по проще.
truvo, лучше для новичка Resource Hacker, FreeWare и размер ~860 Кб. Заодно и скриншоты программы посмотрите, поможет в ориентировании В софткаталоге не нашёл.

truvo 24-11-2008 21:29 962489

D_Master, а где этот файл? - поиском в дистре, в т. ч. и внутри архивов я его не нахожу, а вот когда запустил поиск в TC в каталоге UpdatePack (в котором у меня и дистрибутивы исходный и конечный тоже нахотятся) - Total Commander ваще самопроизвольно закрывается!

D_Master 24-11-2008 22:07 962513

truvo, \i386\SYSDM.CP_ - это запакованый CAB-файл, открывается WinRAR'ом ;)

truvo 25-11-2008 01:35 962682

D_Master, и последний, наверно, вопрос: если я исправлю-заменю файл - у меня не будет какая-нибудь sfc потом ругаться?

И еще: вы сами используете тот текст, который прислали мне на картинке в примере? Может, тогда готовый файлик сбросите? Если там, конечно, других исправлений нет. Ибо на мой взгляд, "Установленные обновления" это уже будет точнее, чем "Сведения о поддержке", ибо никаких своих координат я в oem не предлагаю .

D_Master 25-11-2008 12:07 962972

truvo, надо будет обработать измененный файл утилитой modifype (внимание! В Висте не работает!), а затем запаковать обратно командой
Код:

makecab sysdm.cpl
Но учтите, что эта утилита восстанавливает контрольную сумму, но не цифровую подпись Майкрософт. Чтобы файл setuperr.log был чистый, создайте в папке любого аддона файл KillWFP.lst с именами файлов, которые необходимо вывести из-под защиты Windows File Protection в процессе интеграции аддонов:
Цитата:

Цитата KillWFP.lst
sysdm.cpl
explorer.exe
shell32.dll

и т.п.

Цитата:

Цитата truvo
Может, тогда готовый файлик сбросите? »

Забираем ;)
В архиве распакованый и запакованый sysdm.cpl, готовый для замены оригинального (обработан modifype)


барабулько 28-11-2008 02:21 965832

Цитата:

Цитата D_Master
В архиве распакованый и запакованый sysdm.cpl, готовый для замены оригинального (обработан modifype) »

:read:

D_Master, почему у меня он теперь называется Sanja Alone

как от этого избавиться :read: :diablo:

D_Master 28-11-2008 05:17 965883

барабулько, а я-то тут при чем?? Читайте код скрипта - там по умолчанию стоят лейблы "Sanja Alone" и "Unattended XP DVD". В самом sysdm.cpl эти параметры не выставляются, они берутся из файла oeminfo.ini

барабулько 28-11-2008 07:57 965924

Цитата:

Цитата D_Master
oeminfo.ini »

?



тогда я вобще непонимаю откуда тот саня взялся ?

D_Master 28-11-2008 09:59 966010

барабулько, сам скрипт-то почитайте - раздел "Объявление переменных", вот ТАМ по умолчанию стоят данные лейблы. Измените на свои - будет ваша информация ;)

denverod1 16-04-2009 18:41 1096050

может кто-нибудь прокомментирывать мои действия: правильны ли они ..

1. создаем папку $OEM$
2. создаем текстовый документ cmdlines.txt в папке $OEM$ , в котором пишем:
[COMMANDS]
"oem.cmd"
3. в папку $OEM$ копируем наш oem.cmd (файл с изменением оем информации)
4. папку $OEM$ с помощью Ультраисо копируем в корень нашего образа загрозочной системы Windows XP

будет ли работать такой способ внедрения изменний?

AppleNTU 16-04-2009 19:02 1096069

Цитата:

Цитата denverod1
может кто-нибудь прокомментирывать мои действия: правильны ли они ..
1. создаем папку $OEM$
2. создаем текстовый документ cmdlines.txt в папке $OEM$ , в котором пишем:
[COMMANDS]
"oem.cmd"
3. в папку $OEM$ копируем наш oem.cmd (файл с изменением оем информации)
4. папку $OEM$ с помощью Ультраисо копируем в корень нашего образа загрозочной системы Windows XP
будет ли работать такой способ внедрения изменний? »

да!!! - но только что он тебе покажет --если нет там хотфиксов???? смысл.... (хотя действия правельны)

хотфиксы надо туда для начала интегрировать... и если будешь делать обыкновенным путем (через команду KBXXXXXXX.exe.../....... /integrate..... а не чере UpdatePack-XP....то твоя oem.cmd может отработать впустую. нужно убедиться что oem.cmd отработает после интегрированных хотфиксов... (посмотри по учебнику автоустановки, поминутная установка, что бы я не ошибся)
а вообще надо для начала учебник внимательно почитать -там это все подробно описано!!!
но с пунктом 4 поаккуратнее...
Удачи!

denverod1 16-04-2009 22:46 1096239

У меня проблема в другом, я уже использую готовую сборку, которую создал не я, она меня полностью устраивает, все что мне нужно так это изменить логотип и информацию ОЕМ.

Хотфиксы там уже есть. Все равно спасибо.

Вопрос другой, какое значение будет иметь файл sysdm.cpl ? Автор уже его переделал под себя, не будет ли в моем случае изменение инфо ОЕМ поверх моей, которую якобы я собираюсь выполнять за 12 минут до окончания установки Windows ?

AppleNTU 17-04-2009 12:41 1096617

Цитата:

Цитата denverod1
У меня проблема в другом, я уже использую готовую сборку, которую создал не я, она меня полностью устраивает, все что мне нужно так это изменить логотип и информацию ОЕМ.
Хотфиксы там уже есть. Все равно спасибо.
Вопрос другой, какое значение будет иметь файл sysdm.cpl ? Автор уже его переделал под себя, не будет ли в моем случае изменение инфо ОЕМ поверх моей, которую якобы я собираюсь выполнять за 12 минут до окончания установки Windows ? »

Хорошо... теперь поподробнее..
Цитата:

Цитата denverod1
Вопрос другой, какое значение будет иметь файл sysdm.cpl ? Автор уже его переделал под себя, не будет ли в моем случае изменение инфо ОЕМ поверх моей, которую якобы я собираюсь выполнять за 12 минут до окончания установки Windows ? »

Насамом деле в файле все меняют: картинки, рассположение кнопочек... вообщем разукрашивают как хотят... а сама информация хотфиксов и лого никто не трогает (за исключением меня - анимацию логотипов процессоров и тех кто встаривал информацию "железно") проверить легко - 1. взять скопировать с установленной ситемы sysdm.cpl на не разукрашенную систему.... или 2. переименовать sysdm.cpl, например sysdm.cpl.bak и скопировать с чистого дистрибутива... итого: если та информация которая Вас не устраивала поменялась, то тогда дело в "железном" изменениии надписи sysdm.cpl. если она не поменялась.... то все дело просто в скрипте...
надо найти каким методом запускают скрипт! может из самораспаковывающегося архива в совокупности с "oem".CMD лежат логотипы процессоров по папочкам... может без архива.... (как правило я ищу в папке \I386\SVCPACK\ просматриваю архивы (тут установка идет как правило на 14-13 минуте см. учебник по автоустановки) потом другие папки .. как правило в корню диструбутива...
и главное а Вы уверены, что Вы правлильно делаете, что вообще создаете папку $oem$ - в собраном чужой сборке дистрибутива.... (в прошлом Вашем сообщении вы не слова об этом, что это сборка и притом не Ваша...) какой там метод запуска работы входа в первую ситему... (просмотри в учебнике по автоустановки и сравни со своим дистрибутивом) ? а может сборка мульти загрузочная....
лого хранится в %WINDIR%\system32\... oeminfo.ini (где вся информация обычно написанна) (переменные пути читайте в учебнике по автоустановке...) oemlogo.bmp -это логотип (подробнее можно прочитать в учебнике по автоустановке). вообще это так называемая "фича" біла создана Майкрософтом для производителей компьютеров .. что бі они могли оставлять свою информацию... и по-этому нельзя простым путем (копированием) вставлять 2 картинки... и более... а правят программами - редакторов рессурсов
(Reshack, Restorator.... PEexplorer...)
PS 1.отределитесь что именно у Вас за сборка...
2. после того ка вы определитесь.. ищите метод запуска вашего "оем.cmd"
3. меняете его как Вы хотите без изменения в именах в файлах!!! (перепаковываете архив\ изменяете\ - смотрите сами что Вам нужно)
4. записуете диск
а вообще это все! в топик "приемной телепатов"

denverod1 17-04-2009 13:56 1096671

Если честно после ваших слов прям руки опускаются, чувствуешь себя незнайкой :)

Попробую расписать что удалось собрать:

Если взять sysdm.cpl из дистрибутива автора и заменить им оригинальный то результат остается тот самый, вывод что файл не изменен.

Из слов самого автора, OEM-информация в его сборке не меняется, т. к. объединена с другими программами установки.

Также известно что скрипты запуска, в файле SVCPACK\Myustom.exe. В том же файле Unlocker и Oemlogo, скомпилировано NSIS-ом.

Вот только декомпилирывать возможности нет, решил что быть может есть обходной вариант с $oem$.

Если распаковать Myustom.exe увидим такое:
1 Директорию ## NullSoft Installer ##
2 Директорию $PLUGINSDIR в которой (nsExec.dll, System.dll)
3 Директорию $SYSDIR в которой (Oemlogo.bmp, Unlocker.exe, UnlockerDriver5.sys, UnlockerHook.dll)
4 script.bin

Куда копать?

1. сборка построена на оригинальной корпоративной Вин ХП, с встроенными обновлениями и твиками реестра.
"Диск является мультизагрузочным. Эта функция не имеет интерфейса и построена таким образом, чтобы никак не повлиять на ход установки операционной системы. Запустить нужный вариант загрузки можно назначенными клавишами, список которых можно прочитать в ReadMe.txt, расположенном в корне диска."

2.
Цитата:

Цитата AppleNTU
после того ка вы определитесь.. ищите метод запуска вашего "оем.cmd" »

Я нашел метод, но не могу понять, будет ли он работать через $oem$.
3.
Цитата:

Цитата AppleNTU
3. меняете его как Вы хотите без изменения в именах в файлах!!! »

oem.cmd я создал сам, так как другого варианта изменение информации ОЕМ я не вижу, при весм желании я б вообще за него не брался (потому как не знаком с NSIS).

AppleNTU 17-04-2009 17:34 1096889

Цитата:

Цитата denverod1
NSIS-ом.
Вот только декомпилирывать возможности нет, решил что быть может есть обходной вариант с $oem$. »

я краем уха слыхал если создать папку $oem$ то не будет работаь кнопка F6 для подсовывания дискеток....
декомпелировать можно с помощью unextractor_ом он создас все как нужно... нетрогай папки пуска все будет как расспакованно...
потом качаешь сам дистрибутив nsis инсталятора... устанавливаешь.... (Ищи русскую версию)
и подсовываешь:
при расспаковки есть файл install_script.iss вот главный файл!!! его открываешь с помощью inno setup compiler`ом (из дистрибутива nsis)
там есть строчка:
OutputBaseFilename= и как правило после равно ничего нет а надо OutputBaseFilename=имя_программы) я на этой строчке долгое время стопорился.. в первых знакомствах с этим инсталлятором...
меняешь логотип и запускаешь создание дистрибутива в inno setup compiler_е это кнопка "запустить" (play) она проверяет скрипт, потом упаковывает и потом запускает что получилось (тоесть установку) и в папке Output, которая создается рядом и внутри новый инсталятор... подробнее ищи в другой ветке... я думаю тебе и этого достаточно что я написал для перепаковки
2 сам скрипт нашел? картинку в инстоляторе nsis а где скрипт...? (ты ничего не указал... потому как одну и туже картинку автор сборки определил судя из выше написанного тобой)
3 когда идет установка этого инсталятора? в каком файле он прописан? как он устанавливается? когда найдешь можешь свой самораспаковывающийся архив следущей строчкой добавить с твоим оемлого и oem.cmd...
вообще, извини, но это, как на кофейной гуще гадаю...
и это не относится к данному топику я с Вами получается флудом занимаюсь эти вопросы над перенести в "приемну телепатов"
да и переделыванием чужих сборк вряд-ли найдутся желающие подсказывать как это делать
удачи!

exs 01-02-2010 17:29 1336088

Вложений: 1
Привет, подскажите пожалуйста как заменить эту картинку: что на скрине выделена красным , (извиняюсь мож где то есть инфа но я не нашёл)



ещё раз извините если не в тему =)

Amigos 01-02-2010 20:47 1336270

exs, в c:\WINDOWS\system32\SYSDM.CPL ресурс 1.bmp

Huck74 07-03-2010 16:21 1362993

Подскажите, пожалуйста, как сменить логотип, обведенный красный цветом?

PS. Извеняюсь, если пишу повторно или не туда.

Deep2007 12-03-2010 14:16 1366953

Цитата:

Цитата Huck74
Подскажите, пожалуйста, как сменить логотип, обведенный красный цветом? »

Amigos ответил выше. Берешь программу (например, ResHacker), открываешь файл c:\WINDOWS\system32\SYSDM и смотришь в секции Bitmap картинки. Потом - меняешь на свои. Только на скрине ты привел уже измененный файл SYSDM.CPL, так что ковырять, естественно, надо именно тот экземпляр, что на скрине, а не чистый из Windows XP.

EvilNB 05-09-2010 09:52 1488823

"ОС: Windows XP SP 3 версия 5.1 сборка 2600.xpsp_sp3_qfe.100216-1510" какие строки нужно удалить чтобы убрать ыерсию ОС?


Время: 02:21.

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