Войти

Показать полную графическую версию : [решено] Добавление OEM информации - все вопросы


Страниц : 1 2 3 4 [5] 6 7 8 9 10 11 12

YuriPet
24-10-2006, 09:48
Я тут того... :)
Быстренько скомбинировал "один из двух" (от 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
YuriPet

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

YuriPet
24-10-2006, 10:06
prokazzza
Думать надо... :)

prokazzza
24-10-2006, 10:10
YuriPet

Думай :)

YuriPet
24-10-2006, 23:22
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
YuriPet

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

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

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

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

prokazzza
24-10-2006, 23:52
YuriPet

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

YuriPet
25-10-2006, 00:02
Нет. :no:
Я за это не берусь. :unsure:

Sanja Alone
25-10-2006, 05:54
prokazzza
инфа о процепост #35 (http://forum.oszone.net/post-399805-35.html) этой темы содержит ответ на данный вопрос. Впрочем, как и закинутая тобой в вику статья :)

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


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

Sanja Alone
25-10-2006, 07:09
All
Замечания по синтаксису командных (пакетных) файлов: Комментарий в командных файлах должен идти после команды rem или двойного двоеточия :: (это неправильная метка, к-рая пропускается; см. статью (http://www.robvanderwoude.com/comments.html)).
Не лепите лишних пробелов перед символом переадресации, т.к. они дополнят пересылаемую строку, что абсолютно не нужно (например, вместо echo %%z >> %HF% пишите echo %%z>> %HF%).

prokazzza
25-10-2006, 08:51
Sanja Alone

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

http://wiki.oszone.net/images/9/95/System1.jpg

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

alcos
25-10-2006, 12:10
Системные переменные

%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
prokazzza
инфу об оборудовании сюда.Это как раз и есть окно "Общие сведения о системе", о чем я и написал.

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

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

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

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

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


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

prokazzza
26-10-2006, 08:49
Sanja Alone

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

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

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

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

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

Sanja Alone
26-10-2006, 13:30
All
Полезная инфа: перечень команд Windows XP с описанием в одном файле HTM - ссылка (http://klassnarod.narod.ru/All_CMD_XP.7z). В принципе, это все тот же ntcmds.chm, только в длину :)


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

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

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

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

И еще фрагмен: set CDROM=%~dp0
set CDROM=!CDROM:~0,-7!

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




© OSzone.net 2001-2012