Jump to content

Multi Manufacturer Pre-Activation


Recommended Posts

@Bezalel:

Manufacturer: LENOVO
Model: 8258J4U
4C454E4F 564F

In this example I would rename the OEMBIOS files into 4C454E4F564F.* and then it should work for all computers with manufacturer LENOVO? or would this be specific to the 8258J4U model?

Thank you in advance! :)

Link to comment
Share on other sites


@Bezalel:

Manufacturer: LENOVO
Model: 8258J4U
4C454E4F 564F

In this example I would rename the OEMBIOS files into 4C454E4F564F.* and then it should work for all computers with manufacturer LENOVO? or would this be specific to the 8258J4U model?

Thank you in advance! :)

Yes, 4C454E4F564F.* files are being used for all pc's where Manufacturer is set to: LENOVO

Modelname and type as of yet is not being used in this whole story (might be later)

Link to comment
Share on other sites

Manufacturer: IBM

Model: 1871F1G

49424D

Btw:

for /F "tokens=1* delims='" %%a in ('smbios2.exe /G ^|findstr "Manufacturer"') do (
cscript CreateBatFile.vbs "%%b"
GOTO ENDFOR
)

Why is the GOTO ENDFOR included? As I see it it should just continue with the next command when the FOR is completed and since the :ENDFOR is right after the FOR command it seems pointless to me?

Edited by druiddk
Link to comment
Share on other sites

Why is the GOTO ENDFOR included? As I see it it should just continue with the next command when the FOR is completed and since the :ENDFOR is right after the FOR command it seems pointless to me?

Because Findstr may find more than one "Manufacturer" line (Bezalel reported so) and you don't want to iterate on all of them but just take the 1st one (which hopefully is the right one). Hence the GOTO once the job is done.

Link to comment
Share on other sites

Why is the GOTO ENDFOR included? As I see it it should just continue with the next command when the FOR is completed and since the :ENDFOR is right after the FOR command it seems pointless to me?

Because Findstr may find more than one "Manufacturer" line (Bezalel reported so) and you don't want to iterate on all of them but just take the 1st one (which hopefully is the right one). Hence the GOTO once the job is done.

Since SMBIOS.EXE always reports the structures in numerical order the first manufacturer to be encountered is in the system structure (Structure type 1). according to the SMBIOS spec there must be 1 and only 1 structure of type 1. Structure Type 0 (BIOS) does not contain a manufacturer field.

The Following Structures may also contain a manufacturer:

2 Base Board

3 System Enclosure

4 Processor

22 Portable Battery

30 Out-of-Band Remote Access

39 System Power Supply

Link to comment
Share on other sites

Can your script filter out the additional spaces or can you make/modify your script so it checks if, when no exact match is being found files with a partially the same pattern (4865776C6574742D5061636B617264) are being used?

I will trim the string to remove leading and trailing spaces in a future version. Partial matches are hard to code and if I ever implement CRC32 it will be impossable to implement partial matches.

Link to comment
Share on other sites

Can your script filter out the additional spaces or can you make/modify your script so it checks if, when no exact match is being found files with a partially the same pattern (4865776C6574742D5061636B617264) are being used?

I will trim the string to remove leading and trailing spaces in a future version. Partial matches are hard to code and if I ever implement CRC32 it will be impossable to implement partial matches.

That would be cool,

hey maybe eventually you can make a check that searches for Strings like: IBM, ACER, DELL....this way you would save quite some diskspace as you do not need files for every other variation in "System Manufacturer" names.

Link to comment
Share on other sites

hey maybe eventually you can make a check that searches for Strings like: IBM, ACER, DELL....this way you would save quite some diskspace as you do not need files for every other variation in "System Manufacturer" names.

I'm not concerned with disk space since identical files are only written once to the CD. Implementing this would require hardcoding the manufacturer names in the script (I don't want to do this) or maintaining a database (too much work for too little benefit).

Link to comment
Share on other sites

hey maybe eventually you can make a check that searches for Strings like: IBM, ACER, DELL....this way you would save quite some diskspace as you do not need files for every other variation in "System Manufacturer" names.

I'm not concerned with disk space since identical files are only written once to the CD. Implementing this would require hardcoding the manufacturer names in the script (I don't want to do this) or maintaining a database (too much work for too little benefit).

no, i believe the opposite is true and the benefit of such method will be greater then its limitations...

I'll try to explain...if you search manufacturer strings for example "Dell" or as hex "44656C6C" you would have a more variable system that should work on various types of Dell Systems.

Dell PC's come with a randomly named '"System Manufacturer" string, one advantage it always starts with "Dell" eg;

Dell Computer Corp.

Dell Computer Corporation

Dell Computer Corporation.

Dell Inc.

And maybe a whole lot more variations... who knows!

Using a technique like this you have a more "reliable" versatile fail safe method that should work on every dell pc

Same counts for Acer, eg:

Acer

Acer, Inc.

AcerSystem

Edited by FreeStyler
Link to comment
Share on other sites

@FreeStyler

if you search manufacturer strings for example "Dell" or as hex "44656C6C" you would have a more variable system that should work on various types of Dell Systems.

Dell PC's come with a randomly named '"System Manufacturer" string, one advantage it always starts with "Dell" eg;

Dell Computer Corp.

Dell Computer Corporation

Dell Computer Corporation.

Dell Inc.

And maybe a whole lot more variations... who knows!

An Admin here asked about the same thing.

On a ramdon check of the Dell's in this office, we had three different 'System Manufacturers'.

So,he wanted to know:

Could the scripts in the activation.rar be limited to using only the first 8 or 10 digits of the Manufacturers Hex ?

That way you shouldn't need a load of OEM filesets for Dell's, Acer's and HP's.

Bezalel's reply was to add this line;

You can always add the following line to your own code

CODEMfgHex=Left(MfgHex,8)

I haven't seen him since to find out if it worked for him.

But it should reduce the amount of OEMBIOS files needed to cover this network of Dell's.

p.s. Thanks for the VPC tut. :)

Edited by ZaForD
Link to comment
Share on other sites

:w00t:

I have a working solution for Royalty OEM RIS install.

I'm using the first 3 Manufacturer Characters - like: HEW,DEL,MED,ACE,FUJ,ASU,IBM,SON instead of converting Manufacturer string to hex and renaming multiple OEMBIOS.* files.

ristndrd.sif

[GuiUnattended]
OemSkipWelcome = 1
OemSkipRegional = 1
TimeZone = %TIMEZONE%
AdminPassword = "*"
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I\$OEM$) DO (IF EXIST %J (%J\NirCmd.exe exec hide %J\OEMBUILD.CMD)))"

[SetupParams]
UserExecute="\$WIN_NT$.~LS\$OEM$\nircmd.exe script \$WIN_NT$.~LS\$OEM$\fbreseal.ncl"

Destination folder $oem$

copy compname.exe

copy nircmd.exe

for each manufacturer create a subfolder named with the 3 leftmosts chars of the manufacturer string and copy OEMBIOS.* + oemlogo.bmp to this subfolder.

Example for Hewlett-Packard, in $oem$ i have HEW subfolder and inside

OEMBIOS.*

oemlogo.bmp

script launched by DetachedProgram @T39

@REM ==================================================================
@REM © Copyright 2006 Bill Gates Development Company, L.P.
@REM
@REM Royalty OEM PCs - RIS (Remote Installation Services) based install
@REM
@REM Credits: Bezalel for initial idea and coding for CD based install
@REM
@REM Credits: idle.newbie hp38guser schalti Pyron a06lp for drivers from CD based install
@REM http://www.msfn.org/board/index.php?s=&showtopic=51406&view=findpost&p=358011
==================================================================

@FOR /F %%a IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %%b IN (%%a) DO (IF EXIST %%b (SET DOSPATH=%%b)))
@for /F "tokens=2* delims=: " %%i in ('%dospath%\$oem$\compname.exe /s ^|findstr /L /c:"System manufacturer"') do @set Manufacturer=%%j &@call :oem "%%j" &@call :model
@echo/[General]>%SystemRoot%\System32\oeminfo.ini
@echo/Manufacturer=%Manufacturer%>>%SystemRoot%\System32\oeminfo.ini
@echo/Model=%Model%>>%SystemRoot%\System32\oeminfo.ini
@echo/supporturl=%supporturl%>>%SystemRoot%\System32\oeminfo.ini
@echo/>>%SystemRoot%\System32\oeminfo.ini
@echo/[Support Information]>>%SystemRoot%\System32\oeminfo.ini
@echo/Line1=' '>>%SystemRoot%\System32\oeminfo.ini
@echo/Serial=%Serial%>>%SystemRoot%\System32\oeminfo.ini
@copy /y %dospath%\$oem$\%oem%\oemlogo.bmp %SystemRoot%\System32\oemlogo.bmp >nul

:jump
for %%? in (bi si da ca) do (
 copy /y %dospath%\$oem$\%OEM%\oembios.%%?_ %SystemDrive%\$win_nt$.~ls\i386
 expand -r %dospath%\$oem$\%oem%\oembios.%%?_ %SystemRoot%\system32\
)

:drivers
:: Set Drivers Location Folder
SET DRV=%SystemDrive%\Drivers
:: Ticker script
ECHO.exec hide %dospath%\$oem$\Process.exe -r setup.exe >%SystemDrive%\Ticker.ncl
ECHO.wait 10000 >>%SystemDrive%\Ticker.ncl
ECHO.exec hide %dospath%\$oem$\Process.exe -p SetupCopyOEMInf.exe high >>%SystemDrive%\Ticker.ncl
ECHO.exec hide %dospath%\$oem$\Process.exe -s setup.exe >>%SystemDrive%\Ticker.ncl
ECHO.wait 50000 >>%SystemDrive%\Ticker.ncl
ECHO.script %SystemDrive%\Ticker.ncl >>%SystemDrive%\Ticker.ncl
:: Pre-Install (Suspend Setup, and Set Setup to Low Priority)
%dospath%\$oem$\Process.exe -s setup.exe
%dospath%\$oem$\Process.exe -p setup.exe low
:: If Compressed Drivers Exist, Unzip Them & Change Drivers Location Folder to Hard Drive
IF EXIST Drivers.7z (
SET DRV=%SystemDrive%\Drivers
%dospath%\$oem$\7za.exe x -y -aoa -o"%SystemDrive%\Drivers" "%dospath%\$oem$\Drivers.7z"
)
:: If Compressed Drivers Exist, Uncab Them & Change Drivers Location Folder to Hard Drive
IF EXIST %dospath%\$oem$\EC834ET.TAG (
IF /I "%Model%"=="HP Compaq dc7600 Convertible Minitower" (
SET DRV=%SystemDrive%\Drivers
extrac32 /y /l %SystemDrive%\Drivers\Video %dospath%\$oem$\11725988.cab *.*
extrac32 /y /l %SystemDrive%\Drivers\NIC %dospath%\$oem$\b57win32.cab *.*
extrac32 /y /l %SystemDrive%\Drivers\Audio %dospath%\$oem$\rtkazaud.cab *.*
)
)
IF EXIST %dospath%\$oem$\D1944.TAG (
IF /I "%Model%"=="SCENIC C620" (
SET DRV=%SystemDrive%\Drivers
extrac32 /y /l %SystemDrive%\Drivers\Video %dospath%\$oem$\IALMNT5.CAB *.*
extrac32 /y /l %SystemDrive%\Drivers\NIC %dospath%\$oem$\b57win32.cab *.*
extrac32 /y /l %SystemDrive%\Drivers\Audio %dospath%\$oem$\smwdmch6.cab *.*
extrac32 /y /l %SystemDrive%\Drivers\Misc1 %dospath%\$oem$\cmeu0wdm.cab *.*
)
)
:: Run NirCmd Ticker Script (code above)
START %dospath%\$oem$\NirCmd.exe script %SystemDrive%\Ticker.ncl
:: Install Drivers
%dospath%\$oem$\SetupCopyOEMInf.exe "%DRV%"
:: Post-Install (Close NirCmd, Setup Priority back to Normal, Resume Setup)
%dospath%\$oem$\Process.exe -k NirCmd.exe
%dospath%\$oem$\Process.exe -p setup.exe normal
%dospath%\$oem$\Process.exe -r setup.exe
:: Delete Ticker File
DEL %SystemDrive%\Ticker.ncl

goto :eof

:model
@for /F "tokens=1* delims=: " %%k in ('%dospath%\$oem$\compname /s ^|findstr /c:"model"') do @set Model=%%l
@for /F "tokens=1*" %%m in ('%dospath%\$oem$\compname /d ?s') do @set Serial=%%m
@for /F "tokens=1-2*" %%n in ('findstr "%oem%" %~s0') do (set supporturl=%%o)
@goto :eof
:oem
@set oem=%1
@set oem=%oem:"=%
@set oem=%oem:~0,3%
@goto :eof

[Manufacturer]
FUJ http://support.fujitsu-siemens.com/com/support/index.html : Fujitsu Siemens Computers
HEW http://welcome.hp.com/country/us/en/support.html?pageDisplay=support : Hewlett-Packard
NEC http://help1.nec-computers.com/main.asp?lang=com : NEC Computers International
TOS http://www.csd.toshiba.com/cgi-bin/tais/su/su_sc_home.jsp : TOSHIBA

nircmd script launched by UserExecute @T9

execmd move /y ~$sys.systemroot$\system32\dllcache\oembios.cat ~$sys.systemroot$\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}

regsetval sz "HKLM\SOFTWARE\OEM\Image" "" "Royalty OEM Preinstalled Image"

exec show "~$sys.systemdrive$\$win_nt$.~ls\$oem$\zcnclite.exe" "/wmi:~qWin32_BIOS,SerialNumber~q /sn:~qSN-~q /q /forcerun"

[EDIT]

Done some rewrite of the script for RIS

[/EDIT]

Edited by Bilou_Gateux
Link to comment
Share on other sites

Manufacturer: None (Seanix Technology)
Model: D400S
4E6F6E65

Manufacturer: Mind Computer Products
Model: KM266-8235
4D696E64 20436F6D 70757465 72205072 6F647563 7473

Did these 2 come with Windows Xp Preinstalled?

i don't know these brands, oembios files? ;)

PS, Thx for the LENOVO files :)

Edited by FreeStyler
Link to comment
Share on other sites

A bit like Bilou, I have a solution called from DetachedProgram @T39.

It is not a Compname/batch solution but it uses the RBE.EXE prog (MiTeC ROM BIOS Explorer 2.2) together with a modular AutoIt script.

It is still a bit too alpha for releasing (don't worry Bezalel, I'll start a new thread if ever I do), but here is an idea that I'm implementing and may be found useful by others:

-I use only XP home systems so the productkeys are not the standard one from microsoft. I have to save mines before (thanks to Bezalel's idea). The one paired with the OEMBIOS.* files has to be restored to 'SYSTEM32\$WINNT$.INF' early enough (T12 is too late), hence the T39.

-Althoug it's working with a CD based install, I use winnt(32).exe based installs (network or usb drive), which makes a local source on the sytem. So I don't want to download ALL the oembios sets to the local source since I will use only one.

So @T39, my AutoIt script just writes a batch script that will be run @T12 to connect again to the network (there is no network @T39) and download the files to System32 (and move the cat to \CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}).

It works like a charm. Other features (if someone's interested):

- 1 (double-)click back-up, silent restore!

- Modules allow to backup/import other custom setting that you usually have to fill in winnt.sif:

My winnt.sif is a very standard one with basic infos. So the command to run winnt(32).exe is always the same (no need for a different answer file for each system).

- Current modules cover (at least partially) the Display, NetworkIdentification & UserData sections of winnt.sif. Plus a module for custom commands to be run at T39, T12 or RunOnceEx.

- Backed-up data is stored in a .ini file, easy to edit, manually or with AutoIt.

- oembios.* file and backed-up data can be tagged with either the System's Manufacturer, Model, Version, Serial or UUID (all from type1 smbios, other tables could be implemented).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...