Проблема такая же как и описанная мною в
теме .Опять виновник кард рийдер. Только сложнее. Нужно переделать вот это:
HTML код:
@echo off
rem магические слова :)
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem использовать ли реестровый метод для составления списка апдейтов (1 - да; 0 - нет)
set REGMODE=0
rem маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem производитель
set MANUFACTURER=Pozia
rem модель
set MODEL=Windows XP Pozia Edition 2009
rem кол-во апдейтов в одной строке (по ум. 6)
set UPMAX=6
rem по какой длине выравнивать названия обновлений (по ум. 8)
set UPNAMEL=8
rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=1
rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
rem невидимость серийника означает, что он не будет виден в окне "Сведения о поддержке", но в файле OEMINFO он будет в строке SerialNo=
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 Определение версии REG.EXE
for /F "tokens=1" %%j in ('reg 2^>nul') do if "%%j"=="REG" set REGEXE=rus
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
)
rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->
rem язык (419 - рус.), а также название, пакет обновлений, версия и сборка ОС
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции для
rem русской версии REG.EXE и только пробел для английской
if defined REGEXE (
for /F "tokens=3 delims= " %%j in ('reg query "HKCU\Control Panel\International" /v Locale') do set lang=%%j
for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do set PN=%%j
for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do set CSDV=%%j
for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') do set CV=%%j
for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab') do set BUILD=%%j
) else (
for /F "tokens=3 delims= " %%j in ('reg query "HKCU\Control Panel\International" /v Locale') do set lang=%%j
for /F "tokens=3* delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do set PN=%%j %%k
for /F "tokens=3* delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do set CSDV=%%j %%k
for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') do set CV=%%j
for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab') do set BUILD=%%j
)
rem Анализ командной строки
for /F %%j in ('echo.%* ^| find /i /c "/k"') do if %%j GTR 0 set KEY=1
for /F %%j in ('echo.%* ^| find /i /c "/v"') do if %%j GTR 0 set KEYISVISIBLE=1
for /F %%j in ('echo.%* ^| find /i /c "/r"') do if %%j GTR 0 set REGMODE=1
rem Т.к. используется символ ">", то существующий файл OEMFILE будет перезаписан;
rem т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%"
echo Model=%MODEL%>> "%OEMFILE%"
rem Достаем из winn?.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 set PK=%%j
)
)
rem вспомогательные переменные
set i=1
set l=0
set c=0
set n=0
if %REGMODE% == 1 (
rem Все обновления, установленные в системе
rem (отбираются по подветкам; повторяющиеся эл-ты исключаются)
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 "usebackq tokens=3 delims=\" %%m in ('%%j\%%k') do (
rem !ВАЖНО! - в следующей строке после %%m должно быть не меньше UPNAMEL-1 пробелов
rem (это нужно для выравнивания списка обновлений при наличии апдейтов с короткими названиями - WGA, IE7)
set tmp=%%m
set tmp=!tmp:~0,%UPNAMEL%!
set kb[!tmp!]=!tmp:~2,6!
)
rem учет обновлений .Net 2.0
for /F "tokens=2 delims=\" %%m in ('echo %%j\%%k^| findstr /i /c:" .NET"') do (
set tmp=%%m
set tmp=!tmp:~0,%UPNAMEL%!
set kb[!tmp!]=!tmp:~2,6!
)
)
)
rem Обновления, перечисленные в ветке Uninstall (начинающиеся с KB + 6 цифр)
for /F "tokens=7 delims=\" %%m in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" ^| findstr /i "\<KB[0-9][0-9][0-9][0-9][0-9][0-9]"') do (
set tmp=%%m
set tmp=!tmp:~0,%UPNAMEL%!
set kb[!tmp!]=!tmp:~2,6!
)
rem Определяем общее количество обновлений
for /F %%j in ('set kb[') do set /A n+=1
call :suppinfo
rem Сортировка и перенос списка обновлений в файл, указанный в переменной OEMFILE
for /F "tokens=2 delims=[]" %%j in ('set kb[ ^| sort') do (set kbname=%%j&& call :myprint)
) else (
rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске
for /F %%j in ('dir /b /a:-d "%UPDATESDIR%\%UPDATESMASK%"') do set /A n+=1
call :suppinfo
rem Список апдейтов (имена всех файлов без расширений; имена выравниваются по длине до UPNAMEL символов)
for /F "tokens=1 delims=." %%j in ('dir /b /a:-d "%UPDATESDIR%\%UPDATESMASK%"') do (set kbname=%%j&&set kbname=!kbname! &&set kbname=!kbname:~0,%UPNAMEL%!&& 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=n-l*UPMAX
) else (
if %n% LSS %UPMAX% (
if !c! == %n% (
echo Line!i!=!str!>> "%OEMFILE%"
)
)
if !tmp! LSS %UPMAX% (
if !c! == !tmp! (
echo Line!i!=!str!>> "%OEMFILE%"
)
)
)
goto :EOF
:suppinfo
if defined PK (
if %KEYISVISIBLE% == 0 (
echo [OEMSpecific]>> "%OEMFILE%"
echo SerialNo=%PK%>> "%OEMFILE%"
)
)
)
echo [Support Information]>> "%OEMFILE%"
if %lang% == 00000419 (
echo Line!i!=ОС:%PN:Microsoft=% %CSDV:Service Pack=SP% версия %CV% сборка %BUILD%>> "%OEMFILE%"
) else (
echo Line!i!=OS:%PN:Microsoft=% %CSDV:Service Pack=SP% version %CV% build %BUILD%>> "%OEMFILE%"
)
set /A i+=1
if defined PK (
if %KEYISVISIBLE% == 1 (
if %lang% == 00000419 (
echo Line!i!=Ключ продукта: %PK%>> "%OEMFILE%"
) else (
echo Line!i!=Product Key: %PK%>> "%OEMFILE%"
)
set /A i+=1
)
)
echo Line!i!=>> "%OEMFILE%"
set /A i+=1
rem Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37)
rem !!!!!!!!!!!!!!!!!!!!!!!!!!!
rem Вы можете добавить дополнительную инф-цию для отображения в окне "Сведения о поддержке"
rem в рус. и/или анг. версии (для вставки пустой строки исп-те команду echo Line!i!=>> "%OEMFILE%"
rem ; и не забывайте ставить set /A i+=1 перед каждой строкой)
rem !!!!!!!!!!!!!!!!!!!!!!!!!!!
for /F %%t in ('time/T') do set T=%%t
if %lang% == 00000419 (
echo Line!i!=-------------------------------------------------------------------------------->> "%OEMFILE%"
set /A i+=1
echo Line!i!=Дата и время установки: %date% ^(%T%^)>> "%OEMFILE%"
set /A i+=1
echo Line!i!=-------------------------------------------------------------------------------->> "%OEMFILE%"
set /A i+=1
echo Line!i!=По любым вопросам и предложениям можно обратиться:>> "%OEMFILE%"
set /A i+=1
echo Line!i!=Velcom: 1-111-111-11-11>> "%OEMFILE%"
set /A i+=1
echo Line!i!=MTC: 1-111-111-11-11>> "%OEMFILE%"
set /A i+=1
echo Line!i!=ICQ: 111-111-111>> "%OEMFILE%"
set /A i+=1
echo Line!i!=Mail: 1111@111111.11>> "%OEMFILE%"
set /A i+=1
echo Line!i!=111111 11111111 1111111>> "%OEMFILE%"
set /A i+=1
echo Line!i!=-------------------------------------------------------------------------------->> "%OEMFILE%"
set /A i+=1
echo Line!i!=>> "%OEMFILE%"
set /A i+=1
echo Line!i!=Установленные компоненты и обновления ^(%n%^):>> "%OEMFILE%"
) else (
echo Line!i!=Installation ^(updation^) date and time: %date% ^(%T%^)>> "%OEMFILE%"
set /A i+=1
echo Line!i!=>> "%OEMFILE%"
rem Example for adding custom information
rem set /A i+=1
rem echo Line!i!=Your information>> "%OEMFILE%"
set /A i+=1
echo Line!i!=Installed Components and Updates ^(%n%^):>> "%OEMFILE%"
)
set /A i+=1
echo Line!i!=>> "%OEMFILE%"
set /A i+=1
goto :EOF
Для тех кто не знает командный файл с данным содержанием вносит информацию OEM. В данном случае - версию винды, дату и время установки, личную информацию, количество обновлений и какие именно установлены в системе. В общем нужен очень этот командный файл в Автоит версии.
Огромная надежда на решение этого вопроса на Вас, уважаемый
amel27.