Help - Search - Members - Calendar
Full Version: Multi Manufacturer Pre-Activation
MSFN Forums > Unattended Windows Discussion & Support > Unattended Windows 2000/XP/2003
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

   


Google Internet Forums Unattended CD/DVD Guide
Bezalel
Do you want to use the same CD for installing Windows on multiple computer from differant manufacturers and still maintain Pre-activation? If so I can help but I need your help. I've written a VBScript file that will try to determine who the manufacturer and what model your computer is. The third line of output is the manufacturer string converted into Hex. Please reply with the output from this VBScript so that I can make a database of manufacturer's strings. Please only reply if your computer was built by a Royalty OEM.

CODE
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
    MfgHex=""
    for i=1 to len(objComputer.Manufacturer)
        MfgHex=MfgHex & Hex(Asc(Mid(objComputer.Manufacturer,i,1)))
        If i Mod 4 = 0 then MfgHex=MfgHex & " "
    Next
    ComputerReport = ("Manufacturer: " & objComputer.Manufacturer & vbCrLf &_
    "Model: " & objComputer.Model & vbCrLf &_
    MfgHex)
Next
WScript.Echo ComputerReport


Sample output

QUOTE
Manufacturer: Dell Computer Corp.
Model: PowerVault 715N
44656C6C 20436F6D 70757465 7220436F 72702E


This code hase been modified by gunsmokingman to output the report to a text file.

CODE
strComputer = "."
Dim Act, ComputerReport, Fso, Dtop, Report, Ts
Set Act = CreateObject("Wscript.Shell")
Set Fso = CreateObject("Scripting.FileSystemObject")
Dtop = Act.SpecialFolders("Desktop")
Set Ts = Fso.CreateTextFile(Dtop & "\ComputerReport.txt")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer In colComputer
  MfgHex=""
  For i=1 To Len(objComputer.Manufacturer)
    MfgHex=MfgHex & Hex(Asc(Mid(objComputer.Manufacturer,i,1)))
    If i Mod 4 = 0 then MfgHex=MfgHex & " "
  Next
  ComputerReport = (space(3) & "Manufacturer: " & objComputer.Manufacturer & vbCrLf &_
  space(3) & "Model: " & objComputer.Model & vbCrLf & space(3)& MfgHex)
Next
Ts.WriteLine ComputerReport : Ts.Close
Act.Run(Chr(34)& Dtop & "\ComputerReport.txt" & Chr(34)),1,True
Djé
Nice idea thumbup.gif
But i've got 3 of them (different manufs), I am lazier than you, I don't know vbscript enough AND the output is a msgbox from which i cannot copy/paste !
Can you improve this (clipboard is enough, I'll do the rest) please?
Bezalel
I origionally wanted to use the clipboard but MS doesn't let VBScript files access the clipboard. I changed the code from MsgBox to WScript.Echo so you can redirect the output to a text file

CODE
cscript /nologo GetMfgName.vbs >> MfgName.txt
Djé
Thanks, and here you are:

Manufacturer: TOSHIBA
Model: Satellite M30
544F5348 494241

Manufacturer: COMPAQ
Model: PRESARIO 1721LA 470027-254
434F4D50 4151

Manufacturer: Packard Bell NEC
Model: 00000000000000000000000
5061636B 61726420 42656C6C 204E4543

Reverse chronological order so the 3rd one is there for archeological purpose (not that the others are brand new...). Model is a EasyNote Sc 3703.
Anyway manufacturer still exist!
Also I don't have pre-activation on this one: it was shipped with WinMe!
Bilou_Gateux
thumbup.gif
I will use it for RIS deployment.

post #103
gunsmokingman
I have added to your script so it produces a text file for them to send you or post here.
QUOTE
CODE
strComputer = "."
  Dim Act, ComputerReport, Fso, Dtop, Report, Ts
  Set Act = CreateObject("Wscript.Shell")
  Set Fso = CreateObject("Scripting.FileSystemObject")
  Dtop = Act.SpecialFolders("Desktop")
  Set Ts = Fso.CreateTextFile(Dtop & "\ComputerReport.txt")
  Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set colComputer = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    For Each objComputer In colComputer
     MfgHex=""
      For i=1 To Len(objComputer.Manufacturer)
        MfgHex=MfgHex & Hex(Asc(Mid(objComputer.Manufacturer,i,1)))
        If i Mod 4 = 0 then MfgHex=MfgHex & " "
      Next
     ComputerReport = (space(3) & "Manufacturer: " & objComputer.Manufacturer & vbCrLf &_
    space(3) & "Model: " & objComputer.Model & vbCrLf & space(3)& MfgHex)
   Next
  Ts.WriteLine ComputerReport : Ts.Close
  Act.Run(Chr(34)& Dtop & "\ComputerReport.txt" & Chr(34)),1,True
Sonic
I have many Acer notebook and classic tower to prepare ... I will post my results during this week if I can ... but what about integration of oembios files ? multiple I386 source ? a batch same as pyron method to swith oembios files ?
Bezalel
Sonic; I intend to install using the MS files and replace the files with vendor specific files from cmdlines.txt. I will not be providing the vendor specific files but will provide scripts to extract them from a working system. I'm not familiar with Pyron's method.

gunsmokingman; thanks for the code improvements.
gunsmokingman
Your welcome, hope what I added helps your project.
The text file is left on the user desktop.
Bezalel
Is there any way to get the manufacturer's name without using WMI? apparently WMI isn't fully functional during setup (even when the WMI services are running). I know I can replace the files using GuiRunOnce but then I'd have to disable SFP and I'd rather replace the files before SFP is fully initialized and possibly have the replaced files be protected by SFP.
AmphetaMarinE
here u go...
Manufacturer: Samsung Electronics
Model: SM40P
53616D73 756E6720 456C6563 74726F6E 696373
Bezalel
I've been having some problems with WFP so here is a temporary solution. In order for this to work WFP must be disabled on the machine you are building.

SetEnvVar.vbs
CODE
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
    MfgHex=""
    for i=1 to len(objComputer.Manufacturer)
        MfgHex=MfgHex & Hex(Asc(Mid(objComputer.Manufacturer,i,1)))
    Next
Next
Set Shell=CreateObject("Wscript.Shell")
Shell.Environment.item("MFGHEX") = MfgHex


CollectOEMFiles.bat
CODE
setEnvVar.vbs
copy %SYSTEMROOT%\system32\OEMBIOS.BIN .\%MFGHEX%.BIN
attrib -s %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\OEMBIOS.CAT
copy %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\OEMBIOS.CAT .\%MFGHEX%.CAT
attrib +s %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\OEMBIOS.CAT
copy %SYSTEMROOT%\system32\OEMBIOS.DAT .\%MFGHEX%.DAT
copy %SYSTEMROOT%\system32\OEMBIOS.SIG .\%MFGHEX%.SIG


RestoreOEMFiles.bat
CODE
%SYSTEMDRIVE%\oembios\setEnvVar.vbs
copy /y %SYSTEMDRIVE%\oembios\%MFGHEX%.BIN %SYSTEMROOT%\system32\OEMBIOS.BIN
attrib -s %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\OEMBIOS.CAT
copy /y %SYSTEMDRIVE%\oembios\%MFGHEX%.CAT %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\OEMBIOS.CAT
attrib +s %SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\OEMBIOS.CAT
copy /y %SYSTEMDRIVE%\oembios\%MFGHEX%.DAT %SYSTEMROOT%\system32\OEMBIOS.DAT
copy /y %SYSTEMDRIVE%\oembios\%MFGHEX%.SIG %SYSTEMROOT%\system32\OEMBIOS.SIG


To collect your files put SetEnvVar.vbs and CollectOEMFiles.bat in the same directory and run CollectOEMFiles.bat This will create 4 files whose names are hex strings representing your PC manufacturer.

On your CD put the files SetEnvVar.vbs, RestoreOEMFiles.bat, and all the files created by CollectOEMFiles.bat (from each manufacturer) in the \$OEM$\$1\OEMBIOS\ directory and run %SYSTEMDRIVE%\oembios\RestoreOEMFiles.bat from GUIRunOnce or RunOnceEx. This will not work from cmdlines.txt.

You need to use the CD-Key used by your PC Manufacturer (or any other manufacturer) or one found at http://www.microsoft.com/technet/prodtechn...y/oempreac.mspx.
Sonic
CODE
Manufacturer: Acer, inc.
   Model: Aspire 1640    
   41636572 2C20696E 632E
CODE
Manufacturer: Dell Computer Corporation
   Model: Inspiron 8600                  
   44656C6C 20436F6D 70757465 7220436F 72706F72 6174696F 6E
CODE
Manufacturer: Acer
   Model: Aspire T135
   41636572
CODE
Manufacturer: Acer
   Model: Aspire T160
   41636572


Bezalel, attach files required, it's better than copy/paste, thanks.

Goodbye.
Bilou_Gateux
@Bezalel



Not tried yet your scripts but:

shouldn't be %SystemDrive%\System32 replaced with %SystemRoot%\System32 in both batch scripts.



I would like to switch oembios* files @T39 using SMBios Details to identify System Manufacturer.

Actually i can output SMBios Details using a HP tool (HPQSI.EXE) launched with a batch script (OCA_MRK.CMD) @T39 but i haven't yet written the script to parse the output and copy the right OEMBIOS* files depending of the manufacturer.



ristndrd.sif

QUOTE
[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\OCA_MRK.CMD)))"


sample HPQSI.INI
QUOTE
[ParsedHPQSystemInformation]Product Name="HP Compaq dc7600 Convertible Minitower"
Product Number="EC834ET#ABF"
Serial Number="HUB#######"

[RawHPQSystemInformation]
BIOSVendor="Hewlett-Packard"
BIOSVersion="786D1 v01.03"
BIOSReleaseDate="05/18/2005"
BIOSMajorVersion="1"
BIOSMinorVersion="3"
ECFirmwareMajorVersion="0xff"
ECFirmwareMinorVersion="0xff"
SystemManufacturer="Hewlett-Packard"
SystemProductName="HP Compaq dc7600 Convertible Minitower"
SystemVersion=" "
SystemFamily="103C_53307F"
SystemSKU="EC834ET#ABF"
SystemSerialNumber="HUB#######"
BaseBoardManufacturer="Hewlett-Packard"
BaseBoardProductName="09F0h"
BaseBoardVersion=""
ProcessorManufacturer="Intel"
ProcessorVersion="Intel® Pentium® 4 CPU 3.00GHz"
ProcessorID="0xf43"
MemoryDeviceManufacturer[1]="JEDEC ID:C1 00 00 00 00 00 00 00"
MemoryDeviceSerialNumber[1]="13720101"
MemoryDevicePartNumber[1]="64T32000HU3.7A"
MemoryDeviceManufacturer[2]="JEDEC ID:"
MemoryDeviceSerialNumber[2]=" "
MemoryDevicePartNumber[2]=" "
MemoryDeviceManufacturer[3]="JEDEC ID:C1 00 00 00 00 00 00 00"
MemoryDeviceSerialNumber[3]="13E60101"
MemoryDevicePartNumber[3]="64T32000HU3.7A"
MemoryDeviceManufacturer[4]="JEDEC ID:"
MemoryDeviceSerialNumber[4]=" "
MemoryDevicePartNumber[4]=" "
Bezalel
QUOTE (Bilou_Gateux @ Apr 11 2006, 05:40 AM) *
shouldn't be %SystemDrive%\System32 replaced with %SystemRoot%\System32 in both batch scripts.

You are right I've fixed that post
QUOTE (Bilou_Gateux @ Apr 11 2006, 05:40 AM) *
Actually i can output SMBios Details using a HP tool (HPQSI.EXE) launched with a batch script (OCA_MRK.CMD) @T39 but i haven't yet written the script to parse the output and copy the right OEMBIOS* files depending of the manufacturer.

Is HPQSI.EXE publicly available? I know I have a copy of IBM's SMBIOS.EXE, I'll try to see if I can do anything with the output of these files. I don't want to build my script around files that are not freely available to the public.
Bilou_Gateux
QUOTE (Bezalel @ Apr 11 2006, 01:10 PM) *
Is HPQSI.EXE publicly available? I know I have a copy of IBM's SMBIOS.EXE, I'll try to see if I can do anything with the output of these files. I don't want to build my script around files that are not freely available to the public.




no.gif

We can use another command line tool call GetSys.exe, which is part of 'Mitec System Information Component Suite'.



ReadMe.txt

QUOTE
MSICS is freeware.

Sources are available on purchase/registration. Price is 110 euro (EUR).
For registration details see Order.txt file in this package.

Distribution pack:
------------------

The zip file has subdirectories in it. You must use the pkunzip -d option
to restore this directory tree or you will have problems because the files
will not be in their proper subdirectories.

This is the subdirectory layout:

.\ Info directory
.\apps Applications written using this component
.\demos Sample applications
.\dll MSICS.DLL library for using MSI data from any app
.\help HTML Help file
.\D5 compiled units containing components and packages for installing for Delphi 5 (not in registered version)
.\D6 compiled units containing components and packages for installing for Delphi 6 (not in registered version)
.\D7 compiled units containing components and packages for installing for Delphi 7 (not in registered version)
.\BDS3 compiled units containing components and packages for installing for Delphi 2005 (not in registered version)
.\BDS4 compiled units containing components and packages for installing for Delphi 2006 (not in registered version)
.\Sources source files (only in registered version)




You can get it by downloading the full package, extract and grab the exe in \Apps\GetSys folder.
Bezalel
QUOTE (Bilou_Gateux @ Apr 11 2006, 09:20 AM) *
We can use another command line tool call GetSys.exe, which is part of 'Mitec System Information Component Suite'.


Have you used this program during setup? The output looks more like WMI than SMBIOS.
RogueSpear
QUOTE (Bezalel @ Mar 27 2006, 02:45 PM) *
I origionally wanted to use the clipboard but MS doesn't let VBScript files access the clipboard. I changed the code from MsgBox to WScript.Echo so you can redirect the output to a text file


I'm a little late coming to the thread, but if you still have any interest in utilizing the clipboard from a VBscript, just use AutoItX.

CODE
Set ai = WScript.CreateObject("AutoItX3.Control")
text = ai.ClipGet()
WScript.Echo "Clipboard contains:" & text


You just need to have AutoItX.dll registered.
Bezalel
QUOTE (RogueSpear @ Apr 11 2006, 12:32 PM) *
I'm a little late coming to the thread, but if you still have any interest in utilizing the clipboard from a VBscript, just use AutoItX.

CODE
Set ai = WScript.CreateObject("AutoItX3.Control")
text = ai.ClipGet()
WScript.Echo "Clipboard contains:" & text


You just need to have AutoItX.dll registered.


Thanks, but I prefer to use built-in features of the OS or stand-alone applications for OS deployment and management.
RogueSpear
Just lettin ya know. You never know when something like that might come in handy newwink.gif
Bilou_Gateux
QUOTE (Bezalel @ Mar 27 2006, 02:45 PM) *
Have you used this program during setup? The output looks more like WMI than SMBIOS.




Yes i've launched Getsys.exe @T39. Here the output:

QUOTE
MiTeC System Information Utility 10.2.0 - Copyright © 1997-2006 Michal Mutl
Type /? for options

SYSTEM OVERVIEW...OK
Machine: MACHINENAME
System : PC multiprocesseur ACPI
Model : Hewlett-Packard HP Compaq dc7600 Convertible Minitower
UpTime : 2 Minutes, 47 Seconds.
-------------------------------------------------------------------------------
CPU : 1 x Intel Pentium 4 - 2990 MHz
Cache: 16 KB L1 + 2048 KB L2 + 0 KB L3
-------------------------------------------------------------------------------
Mainboard: Hewlett-Packard 09F0h
Memory : 503 MB
-------------------------------------------------------------------------------
Operating system: Windows XP Professional [5.1.2600]Service pack : 2.0
Logged user : SYSTEM
-------------------------------------------------------------------------------
Display adapter: Intel® 82945G Express Chipset Family
Memory : 128 MB
-------------------------------------------------------------------------------
Fixed : Promise 1X2 Mirror/RAID - 76316 MB (SCSI)
C: (Primary NTFS - 76308 MB)
DVD : LITE-ON DVD SOHD-167T - 0 MB (ATAPI)
D:
-------------------------------------------------------------------------------
Keyboard:
-------------------------------------------------------------------------------
Mouse:
-------------------------------------------------------------------------------
Default printer:
-------------------------------------------------------------------------------




As you can see, @T39 we don't get full infos about PCI PnP Devices because they're not yet installed.
Bezalel
I took a look a GetSys and decided not to use it because it merges the manufacturer and model into 1 long string. I've decided to use IBM's SMBIOS but need some help extracting the manufacturer's name from the output file.
Djé
Do you mean something like indy_dba's way in this post?

If you need further help, I would be glad to give a hand.
Bigbrit
Manufacturer: Elitegroup Co.
Model: i-Buddie
456C6974 6567726F 75702043 6F2E2020 20202020 20202020 20202020 20202020

Hope this helps

welcome.gif
Bezalel
QUOTE (Djé @ Apr 26 2006, 10:18 PM) *
Do you mean something like indy_dba's way in this post?

If you need further help, I would be glad to give a hand.


With indy_dba's method I would need to hardcode every manufacturer's name in my script or have every user modify their own scripts based on which computers they own. (Even worse the script might see a component manufacturer's name and miskake it for the system manufacturer.)

This is what I need my script to do:
Run SMBIOS (I think /G) and redirect the output to a text file
Search the output file for the "System Information" section
Search the "System Information" section for the "Manufacturer" line
Convert the manufacturer string into hex and replace the OEMBIOS files with files named with the hex string.

My script would not have to be modified when you by another PC from a a new manufacturer all you have to do is collect the OEMBIOS files from your new computer rename them with the manufacturer's hex string (I've already written these scripts) and drop the files onto your CD.
Bezalel
QUOTE (Bigbrit @ Apr 26 2006, 11:02 PM) *
Manufacturer: Elitegroup Co.
Model: i-Buddie
456C6974 6567726F 75702043 6F2E2020 20202020 20202020 20202020 20202020

Hope this helps

welcome.gif


I don't thing this unit uses preactivation sad.gif Also notice that the manufacturers name has 18 spaces after it, this is the reason I converted the string to hex.
Bilou_Gateux
QUOTE (Bezalel @ Apr 27 2006, 04:05 AM) *
This is what I need my script to do:
Run SMBIOS (I think /G) and redirect the output to a text file
Search the output file for the "System Information" section
Search the "System Information" section for the "Manufacturer" line
Convert the manufacturer string into hex and replace the OEMBIOS files with files named with the hex string.

My script would not have to be modified when you by another PC from a a new manufacturer all you have to do is collect the OEMBIOS files from your new computer rename them with the manufacturer's hex string (I've already written these scripts) and drop the files onto your CD.


QUOTE
@for /f "tokens=1* delims=: " %%i in ('smbiosd /t:1 ^|findstr "Manufacturer"') do @set "Manufacturer=%%j" &@call echo/%Manufacturer%


Previous script based from an original script by Yzöwl
for converting manufacturer string into hex with batch script, ask Yzöwl batch expert. If you use vbs or wsh, you could not run the script @T39
Djé
May I suggest the attached script for including conversion to hex...

It may not be very elegant, but it should work at any time as soon as CMD.EXE works (@T39,...).

EDIT3 blushing.gif : repaired the broken handling of spaces. Simplified and commented the code.

optimized version --> the Hex conversion works with some of the 7-bits printable ASCII characters: 32 (x20: <space>) to 126(x7E: ~).
Many many many problems with the double quote (") and the CMD special characters (&<|>^). Yappari.

Hex codes grouped by 4, separated with spaces.
Bezalel
I'n using this line of code
CODE
for /F "tokens=1* delims='" %%a in ('smbios.exe /G ^|findstr "Manufacturer"') do converttohex.bat "%%b"

Currently it is calling converttohex each time it encounters the string "Manufacturer". How can I make only call converttohex for the first occurance.
Djé
QUOTE (Bezalel @ Apr 27 2006, 09:44 PM) *
Currently it is calling converttohex each time it encounters the string "Manufacturer". How can I make only call converttohex for the first occurance.

If you would use the smbiosd linked to by indy_dba, and use the '/t:1' switch as shown by bilou, I think you would have only ONE occurance of "Manufacturer".
QUOTE (Bezalel @ Apr 27 2006, 04:05 AM) *
Search the output file for the "System Information" section
Search the "System Information" section for the "Manufacturer" line
the '/t:1' switch perform your 1st point, and the 'FOR' loop the 2nd newwink.gif


However, if you want to stick to IBM's SMBIOS which I don't know and may not have the same switch, you can exit the loop after the first occurance by doing it this way:
CODE
for /F "tokens=1* delims='" %%a in ('smbios.exe /G ^|findstr "Manufacturer"') do (
converttohex.bat "%%b"
GOTO ENDFOR
)
:ENDFOR
Bezalel
I think I have a working set of files. Extract these files to your hard drive and run GetOEMFiles.bat then copy the files to the $OEM$ directory of your CD. I haven't tested these yet but it looks good.

You don't have to use my cmdlies.txt file but you need to run RestoreOEMFiles.bat before WFP starts protecting the files (I think T-9)

If anyone has a Manufacturer's string that contains a ' or a " (single quote or double quote) or anyone else for that matter let me know if it works.

Attachment Removed - See Post #34
Bilou_Gateux
Mitec GetSysInfo.exe will not be available for one year.

Instead of using IBM smbios tool, why not using:
Compname.exe was written using the excellent Mitec SysInfo by Michal Mutl (see www.mitec.d2.cz) and Indy.

CODE
@for /F "tokens=2* delims=: " %%i in ('compname /s ^|findstr /L /c:"System    manufacturer"') do @set Manufacturer=%%j &@call manufacturerhex "%%j"


EDIT: previous script modified to trim any leading/trailing spaces &call Djé script.

Djé manufacturerhex.cmd script modified to take manufacturer string as 1st parameter
QUOTE
FOR /F "tokens=1* delims=: " %%i IN ('smbiosd /t:1 ^|findstr "Manufacturer"') DO SET "TEST=%%j"
SET TEST=%1
SET TEST=%TEST:"=%

echo Manufacturer: %TEST%
Bezalel
QUOTE (Bilou_Gateux @ Apr 28 2006, 01:33 PM) *
Instead of using IBM smbios tool, why not using:
Compname.exe was written using the excellent Mitec SysInfo by Michal Mutl (see www.mitec.d2.cz) and Indy.

CODE
@for /f "tokens=1* delims=:" %%i in ('compname /s ^|findstr /L /c:"System    manufacturer"') do @set Manufacturer=%%j


Because I didn't know about this program. At this stage I'm going to stay with smbios2.exe because it is a well known product and I can freely distribute it.

If someone writes an executable thet will output just the Manufacturer's String with no additional formatting I might change my script to use it.

Feel free to use whatever method you like in your own script but please don't use this thread to distribute these changes yet (unless my code is broken). There are a number of enhancements (OEMLOGO.BMP, OEMINFO.INI, Signature checking, Verifying SLP Status, SFX Support) that I want to add and don't want this project to be pulled in too many directions
Bezalel
I removed the attachment from post 31 bacause it failed on my PC. Apparently .VBS is not associated with wscript at T-12. My next test is to chance the line
CODE
setEnvVar.vbs "%%b"

to
CODE
wscript setEnvVar.vbs "%%b"

and see what happens. If this works I will repost the files.
mittern8
Hello and greetings from YerMoney!
This is my first time posting on this board, so let me start with telling you, that I'm deeply impressed by the threads I read tonite.
I focused mainly on the 'works' of Bezalel, because I'm trying to figure out, which part of the DMI-table is checked to see whether the installed Windows is pre-activated or not.

My first guess was the "Manufacturer"-string, since I was able to install a pre-activated (SLP) OEM Windows on a different mainboard after I patched the "Manufacturer"-string in this boards DMI-table.
Well, this worked like a charme!

Now it is interesting to see that you're trying to get rid of the problem to keep the pre-activation the other way round - by exchanging the OEMBIOS-files on the setup media (as far as I understand this thread).
Anyway - patching the DMI-table or collecting a pool of different oembios-files - I greatly apreciate the fact, that this thread gives a collection of different manufacturer strings!
So here is my contribution
QUOTE
Manufacturer: MEDIONPC
Model: AWRDACPI
4D454449 4F4E5043


Oh, and by the way, a very informative tool is available from german compu-mag c't, named ctdmi.exe and bundled in ctbios15.zip - unfortunately only available in german.
Bezalel
QUOTE (mittern8 @ May 20 2006, 01:57 AM) *
I'm trying to figure out, which part of the DMI-table is checked to see whether the installed Windows is pre-activated or not.


SLP Activation doesn't check the DMI tables, it searches through a specific memory address range looking for a particular string. The OEMs provide the address range and string to MS who encrypt them and provide the OEMs with an OEMBIOS file set.
mittern8
I'll reply to that more detailed later on (it's early morning over here in Germany and I want to check a few things first).
But ...

QUOTE
SLP Activation doesn't check the DMI tables, it searches through a specific memory address range looking for a particular string.


Even if SLP activation doesn't check the DMI tables itself, the manufacturer string for sure derives from the DMI table data.
Otherwise I wouldn't have been successfull in patching the string in the DMI table and keep the pre-activation working on atotally different hardware leaving OEMBIOS files untouched.
In my opinion this is a more than sufficient practical proof.

To verify this (theoretically) we have to ask how and from where the WMI does collect it's infos.

For example:
With the function you use, you retrieve the "Manufacturer-" and the "Model-String".
This "Model-String" is non existent in the DMI tables, but instead I discovered it in the ACPI APIC table ("OEM TABLE ID") - where you (vice versa) won't find a "Manufacturer-String".
Even though the "Model-String" is (yet) of no interest for the pre-activation (but it will become important in concern of Trusted Computing), it leads me to the conclusion that the WMI data is collected from different sources (DMI table, ACPI APIC table and so on) and compiled to the WMI database.
So my intension is to find out what data sources should be examined and how the chances are to modify them.

Some thoughts on "Trusted Computing":
Bezalel
Maybe I should clarify my last post. SLP doesn't browse the DMI or SMBIOS tables for a specific entry, instead it searches for the sting within a specific range. The manufacturer may choose to search from 000E:4000 to 000F:FFFF (the entire BIOS) to allow for flexibility in BIOS design and allow them to place the string anywhere in their BIOS. They may also choose to use their name as the search string.

WMI uses multiple sources for its data. I think the manufacturer and model originate from SMBIOS.
mittern8
QUOTE (Bezalel @ May 24 2006, 07:44 AM) *
Maybe I should clarify my last post. SLP doesn't browse the DMI or SMBIOS tables for a specific entry, instead it searches for the sting within a specific range. The manufacturer may choose to search from 000E:4000 to 000F:FFFF (the entire BIOS) to allow for flexibility in BIOS design and allow them to place the string anywhere in their BIOS. They may also choose to use their name as the search string.

WMI uses multiple sources for its data. I think the manufacturer and model originate from SMBIOS.

Ja, okay!
So, it seems quite clear that SLP is using a different mechanism as WMI does, right?

P.S.:
I'm very keen to see how U solve the problem with the OEMBIOS files!
And, BTW, just read an articel on Windows Vista and BitLocker Drive Encryption no.gif
RogueSpear
QUOTE (Bezalel @ May 1 2006, 01:08 AM) *
I removed the attachment from post 31 bacause it failed on my PC. Apparently .VBS is not associated with wscript at T-12. My next test is to chance the line


You can run .vbs files from cmdlines.txt just fine, however you're limited to cscript.exe.

On another note, would it be beneficial to make a repository of the BIOS files for various makes and models?
Bezalel
QUOTE (RogueSpear @ May 24 2006, 08:04 AM) *
would it be beneficial to make a repository of the BIOS files for various makes and models?

The OEMBIOS files are MS copyrighted files, such a project would probably be considured warez.
RogueSpear
That was running through my mind, but I rationalized it by assuming the BIOS files would not allow you to install XP on a computer that it wasn't meant for. This would presumably mean Dell, Gateway, Emachines, etc. Furthermore, the key codes would not be a part of this, only the files. The other thing I thought about was the fact that people don't seem to have a crisis of conscious when it comes to distributing patched OS files - uxtheme.dll, tcpip.sys, etc.

I'm not a lawyer, but that was my take on it.
Bezalel
I have a set of files that worked on a Dell, HP, and Toshiba PC. I made the following changes to the CD:

I deleted OEMBIOS.BI_ OEMBIOS.DA_, OEMBIOS.SI_ from the CD (make sure you leave OEMBIOS.CA_)
I removed all lines referancing any of the OEMBIOS files (including OEMBIOS.CAT) from txtsetup.sif and dosnet.inf.
I created a winnt.sif file that included a MS Generic key http://www.microsoft.com/technet/prodtechn...y/oempreac.mspx (Home users should use a Factory Key)
I copied the files from Click to view attachment to the $OEM$ directory along with the files created using Click to view attachment
ZaForD
Hi Bezalel,

Sorry for the newbie question, but i got abit lost on this thread. blushing.gif

Do i copy the files created by the CollectFiles.rar on each of my PC's (a Dell and a HP) to the $OEM$ folder on my UAXPCD, with the files inside the activation.rar.

Then burn and run, is that correct ?
Bezalel
QUOTE (ZaForD @ May 30 2006, 01:44 PM) *
Sorry for the newbie question, but i got abit lost on this thread. blushing.gif


Thats understandable, I myself am figuring out this process so it keeps changing


QUOTE (ZaForD @ May 30 2006, 01:44 PM) *
Do i copy the files created by the CollectFiles.rar on each of my PC's (a Dell and a HP) to the $OEM$ folder on my UAXPCD, with the files inside the activation.rar.


You only need the files created by CollectFiles.rar you don't need the files contained in ColletFiles.rar (The files in CollectFiles.rar are pretty sloppy and leave behind an enviroment variable but they do work.)

Here is listing of the contents of my $OEM$ directory:
CODE
44656C6C20436F6D707574657220436F72702E.BIN
44656C6C20436F6D707574657220436F72702E.CAT
44656C6C20436F6D707574657220436F72702E.DAT
44656C6C20436F6D707574657220436F72702E.SIG
44656C6C20436F6D707574657220436F72706F726174696F6E.BIN
44656C6C20436F6D707574657220436F72706F726174696F6E.CAT
44656C6C20436F6D707574657220436F72706F726174696F6E.DAT
44656C6C20436F6D707574657220436F72706F726174696F6E.SIG
4865776C6574742D5061636B617264.BIN
4865776C6574742D5061636B617264.CAT
4865776C6574742D5061636B617264.DAT
4865776C6574742D5061636B617264.SIG
544F5348494241.BIN
544F5348494241.CAT
544F5348494241.DAT
544F5348494241.SIG
cmdlines.txt
CreateBatFile.vbs
RestoreOEMFiles.bat
RestoreOEMFiles.tmp
smbios2.exe
ZaForD
Thanx for the reply Bezalel,
I spent most of yesterday trying to collect the oembios file from the PC's around here,
but it looks like most have been formated and had clean installs. So the oembios files aren't any good. sad.gif

I'm guessing i'd get into trouble asking for the files from royalty OEM's here, so i'll have to get sneaky and find them some other way to get them, before I can test this out properly.
But i'll still give it ago with the two sets I have and let you know the results.

I've got the Sony XP Pro and Compaq Home files, and I'm pretty sure i can find some Dell and HP files, its the Evesham XP Pro ones that'll be the hardest to find. wacko.gif
Bezalel
Although my method is currently working SFC is aware that the files have been changed because oembios.cat was parsed before the files were changed. If the end user ever runs SFC manually they will be prompted for the oembios files that match the origional oembios.ca_ that was left on the CD. My two question now are:

When SFC parses the oembios.cat file where does it store the thumbprints of the remaining oembios files? (I am able to delete the oembios.cat file, it is not protected but SFC still knows that the files aren't origional)

Can I run cscript.exe from DetachedProgram? (To replace oembios.cat before it is parsed.)

Presetup.cmd looks interesting but I'm trying to keep away from hacked binariess
RogueSpear
I'm not sure about cscript.exe from DetachedProgram, but I'm sure a compiled AutoIt script would work just fine.
Bezalel
QUOTE (ZaForD @ May 31 2006, 09:50 AM) *
Thanx for the reply Bezalel,
I spent most of yesterday trying to collect the oembios file from the PC's around here,
but it looks like most have been formated and had clean installs. So the oembios files aren't any good. sad.gif

I'm guessing i'd get into trouble asking for the files from royalty OEM's here, so i'll have to get sneaky and find them some other way to get them, before I can test this out properly.
But i'll still give it ago with the two sets I have and let you know the results.

I've got the Sony XP Pro and Compaq Home files, and I'm pretty sure i can find some Dell and HP files, its the Evesham XP Pro ones that'll be the hardest to find. wacko.gif


For about 3 months I didn't go into a certain CompUSA because I was almost caught collecting oembios files and factory keys from floor models. Its easier to get the files from a laptop because you can naturally rest you hand over your USB drive.

BTW You only need one set of files to test the CD.
Bezalel
QUOTE (RogueSpear @ May 31 2006, 10:07 PM) *
I'm not sure about cscript.exe from DetachedProgram, but I'm sure a compiled AutoIt script would work just fine.

I had previously kept away from AutoIt because I thought it needed a runtime to be installed. Now that you have shown me the light, I'm adding AutoIt to my collection of development tools.




Google Internet Forums Unattended CD/DVD Guide

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.