Jump to content

unique ID for System(PC)


 Share

Recommended Posts

It appears that UUID information is stored at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data.

But...

At system startup all informations from there are collected by mssmbios.sys (that is SMBIOS driver).

Then something happens. This driver deletes (zeroes out) few data fields. UUID section inclusively, probably for security reasons.

All that is collected is stored in a special buffer.

Question is how to acces data in that buffer. WMI is the answer and was the only method until kernel32.dll got two functions EnumSystemFirmwareTables() and GetSystemFirmwareTable().

How do I know this? I read document named SMBIOS.doc

Find it, it's 112KB doc file. When you are finished reading, you will probably say: "So that's how WMI works! :) "

♡♡♡

.

eMyvnE

Link to comment
Share on other sites

  • Moderators

It appears that UUID information is stored at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data.

But...

At system startup all informations from there are collected by mssmbios.sys (that is SMBIOS driver).

Then something happens. This driver deletes (zeroes out) few data fields. UUID section inclusively, probably for security reasons.

All that is collected is stored in a special buffer.

Question is how to acces data in that buffer. WMI is the answer and was the only method until kernel32.dll got two functions EnumSystemFirmwareTables() and GetSystemFirmwareTable().

How do I know this? I read document named SMBIOS.doc

Find it, it's 112KB doc file. When you are finished reading, you will probably say: "So that's how WMI works! :) "

I wouldn't be disappointed yet.

Supported Operating Systems: Windows Vista, Windows XP Professional x64 Edition

So your theory wouldn't work with Windows XP SP2 and below.

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

  • Moderators

Ok guys all solutions NEVER WORK FOR ME, any 1 can plz help me ?

For simplicity sake, use DriveGetSerial.

The only issue you'll run into that UUID usually solves is if it's cloned in a virtual environment and passed around (DriveGetSerial won't help you there).

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

  • 3 months later...

From the forums

#Include <WinAPI.au3>

MsgBox(4096, "Generate Guid", _CreateGuid())

Func _CreateGuid()
    Local $Guid = DllStructCreate($tagGUID)
    $Result = DllCall("OLE32.DLL", "dword", "CoCreateGuid", "ptr", DllStructGetPtr($Guid))
    $Result = _WinAPI_StringFromGUID(DllStructGetPtr($Guid))
    Return $Result
EndFunc
Hey, Thanks! You saved my day right now!

spyro

Link to comment
Share on other sites

MAC address would be a start. If you want to get hold of it (and lots of other interesting information), you should start by taking a look at this message : http://www.autoitscript.com/forum/index.ph...st&p=513225

Note the comment for ProgAndy (two posts latest) about increasing the size of the structure on line 109. You could take the output from _IPH_Capture() and parse it in to an XML DOM for further processing.

Regards,

WBD

Link to comment
Share on other sites

  • 5 weeks later...

Universally unique identifier (UUID) for this product. A UUID is a 128-bit identifier that is guaranteed to be different from other generated UUIDs. If a UUID is not available, a UUID of all zeros is used.

http://msdn.microsoft.com/en-us/library/aa394105(VS.85).aspx

I'm using the following code:

Func _GetUUID()
    Local $oWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2")
    If Not IsObj($oWMIService) Then
        Return SetError(1, 0, -1)
    EndIf
    Local $oSysProd = $oWMIService.ExecQuery("Select * From Win32_ComputerSystemProduct")
    For $oSysProp In $oSysProd
        Return SetError(0, 0, $oSysProp.UUID)
    Next
    Return SetError(2, 0, -1)
EndFunc

InputBox('UUID', 'Computer Universally Unique Identifer', _GetUUID())

I get:

00000000-0000-0000-0000-000000000000

Does anyone have an idea how to force one to be generated?

Is there another method of getting or creating a Unique System ID?

Thanks.

Link to comment
Share on other sites

  • 6 months later...

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
 Share

  • Recently Browsing   0 members

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