Machine serial Number
Machine serial Number
Collapse
X
-
Tags: None
-
Originally posted by nnisarahamedMachine serial Number
front-end, back-end versions.
explain your prolem then post what you had tryed. -
Originally posted by hariharanmcapost your query in detail with
front-end, back-end versions.
explain your prolem then post what you had tryed.
i want to protect my application without using any dongle. so i have to to get the hardware id. but hardware id like hdd id will change after format. cpu id also can change in BIOS. the best way is to get the get the serial number? how to get the manufacturer serial number?
thanksComment
-
Originally posted by Austeni want to protect my application without using any dongle. so i have to to get the hardware id. but hardware id like hdd id will change after format. cpu id also can change in BIOS. the best way is to get the get the serial number? how to get the manufacturer serial number?
P.S. This sounds like a question for the Miscellaneous Questions or Software Development forum, as it really goes beyond a particular programming language.Comment
-
Originally posted by Killer42I don't think you can get it reliably. There was such a public outcry that Intel went back to switching it off by default. Nobody wants to have their PC tracked.
P.S. This sounds like a question for the Miscellaneous Questions or Software Development forum, as it really goes beyond a particular programming language.
i also looking for how to get the hard disk serial number. unfortunately to say that, i couldnt get it. only can get the volumn number. but... if you really need and willing to pay for the solution, you can visit ionwork.com. its about 50USD.
however, hopefully someone can write the program to get the serial number and share with us.Comment
-
Hi,
One of best way to configure a tool to run only on a particular machine is using the MANUFACTURER SERIAL NUMBER OF THE HARD DISK, which is UNIQUE.
GetVolumeInform ation will return ONLY the volume serial number, which keeps changing on format.
Use the following code to retrieve Model Number, Serial Number and Firmware Revision of a hard disk.
Here by I am providing the Class file code & vb file code.
I am pasting the code of the class file opened by notepad here by
---------------------------------------------------------------
[code=vb]
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBeha vior = 0 'vbNone
DataSourceBehav ior = 0 'vbNone
MTSTransactionM ode = 0 'NotAnMTSObject
END
Attribute VB_Name = "HDSN"
Attribute VB_GlobalNameSp ace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredI d = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClass Builder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
' Antonio Giuliana, 2001-2003
' Costanti per l'individuazion e della versione di OS
Private Const VER_PLATFORM_WI N32S = 0
Private Const VER_PLATFORM_WI N32_WINDOWS = 1
Private Const VER_PLATFORM_WI N32_NT = 2
' Costanti per la comunicazione con il driver IDE
Private Const DFP_RECEIVE_DRI VE_DATA = &H7C088
' Costanti per la CreateFile
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRIT E = &H2
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const CREATE_NEW = 1
' Enumerazione dei comandi per la CmnGetHDData
Private Enum HDINFO
HD_MODEL_NUMBER
HD_SERIAL_NUMBE R
HD_FIRMWARE_REV ISION
End Enum
' Struttura per l'individuazion e della versione di OS
Private Type OSVERSIONINFO
dwOSVersionInfo Size As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
' Struttura per il campo irDriveRegs della struttura SENDCMDINPARAMS
Private Type IDEREGS
bFeaturesReg As Byte
bSectorCountReg As Byte
bSectorNumberRe g As Byte
bCylLowReg As Byte
bCylHighReg As Byte
bDriveHeadReg As Byte
bCommandReg As Byte
bReserved As Byte
End Type
' Struttura per l'I/O dei comandi al driver IDE
Private Type SENDCMDINPARAMS
cBufferSize As Long
irDriveRegs As IDEREGS
bDriveNumber As Byte
bReserved(1 To 3) As Byte
dwReserved(1 To 4) As Long
End Type
' Struttura per il campo DStatus della struttura SENDCMDOUTPARAM S
Private Type DRIVERSTATUS
bDriveError As Byte
bIDEStatus As Byte
bReserved(1 To 2) As Byte
dwReserved(1 To 2) As Long
End Type
' Struttura per l'I/O dei comandi al driver IDE
Private Type SENDCMDOUTPARAM S
cBufferSize As Long
DStatus As DRIVERSTATUS ' ovvero DriverStatus
bBuffer(1 To 512) As Byte
End Type
' Per ottenere la versione del SO
Private Declare Function GetVersionEx _
Lib "kernel32" Alias "GetVersion ExA" _
(lpVersionInfor mation As OSVERSIONINFO) As Long
' Per ottenere un handle al device IDE
Private Declare Function CreateFile _
Lib "kernel32" Alias "CreateFile A" _
(ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByVal lpSecurityAttri butes As Long, _
ByVal dwCreationDispo sition As Long, _
ByVal dwFlagsAndAttri butes As Long, _
ByVal hTemplateFile As Long) As Long
' Per chiudere l'handle del device IDE
Private Declare Function CloseHandle _
Lib "kernel32" _
(ByVal hObject As Long) As Long
' Per comunicare con il driver IDE
Private Declare Function DeviceIoControl _
Lib "kernel32" _
(ByVal hDevice As Long, _
ByVal dwIoControlCode As Long, _
lpInBuffer As Any, _
ByVal nInBufferSize As Long, _
lpOutBuffer As Any, _
ByVal nOutBufferSize As Long, _
lpBytesReturned As Long, _
ByVal lpOverlapped As Long) As Long
' Per azzerare buffer di scambio dati
Private Declare Sub ZeroMemory _
Lib "kernel32" Alias "RtlZeroMem ory" _
(dest As Any, _
ByVal numBytes As Long)
' Per copiare porzioni di memoria
Private Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMem ory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)
Private Declare Function GetLastError _
Lib "kernel32" () As Long
Private mvarCurrentDriv e As Byte ' Drive corrente
Private mvarPlatform As String ' Piattaforma usata
Public Property Get Copyright() As String
' Copyright
Copyright = "HDSN Vrs. 1.00, (C) Antonio Giuliana, 2001-2003"
End Property
' Metodo GetModelNumber
Public Function GetModelNumber( ) As String
' Ottiene il ModelNumber
GetModelNumber = CmnGetHDData(HD _MODEL_NUMBER)
End Function
' Metodo GetSerialNumber
Public Function GetSerialNumber () As String
' Ottiene il SerialNumber
GetSerialNumber = CmnGetHDData(HD _SERIAL_NUMBER)
End Function
' Metodo GetFirmwareRevi sion
Public Function GetFirmwareRevi sion() As String
' Ottiene la FirmwareRevisio n
GetFirmwareRevi sion = CmnGetHDData(HD _FIRMWARE_REVIS ION)
End Function
' Proprieta' CurrentDrive
Public Property Let CurrentDrive(By Val vData As Byte)
' Controllo numero di drive fisico IDE
If vData < 0 Or vData > 3 Then
Err.Raise 10000, , "Illegal drive number" ' IDE drive 0..3
End If
' Nuovo drive da considerare
mvarCurrentDriv e = vData
End Property
' Proprieta' CurrentDrive
Public Property Get CurrentDrive() As Byte
' Restituisce drive fisico corrente (IDE 0..3)
CurrentDrive = mvarCurrentDriv e
End Property
' Proprieta' Platform
Public Property Get Platform() As String
' Restituisce tipo OS
Platform = mvarPlatform
End Property
Private Sub Class_Initializ e()
' Individuazione del tipo di OS
Dim OS As OSVERSIONINFO
OS.dwOSVersionI nfoSize = Len(OS)
Call GetVersionEx(OS )
mvarPlatform = "Unk"
Select Case OS.dwPlatformId
Case Is = VER_PLATFORM_WI N32S
mvarPlatform = "32S" ' Win32S
Case Is = VER_PLATFORM_WI N32_WINDOWS
If OS.dwMinorVersi on = 0 Then
mvarPlatform = "W95" ' Win 95
Else
mvarPlatform = "W98" ' Win 98
End If
Case Is = VER_PLATFORM_WI N32_NT
mvarPlatform = "WNT" ' Win NT/2000
End Select
End Sub
Private Function CmnGetHDData(hd i As HDINFO) As String
' Rilevazione proprieta' IDE
Dim bin As SENDCMDINPARAMS
Dim bout As SENDCMDOUTPARAM S
Dim hdh As Long
Dim br As Long
Dim ix As Long
Dim hddfr As Long
Dim hddln As Long
Dim s As String
Select Case hdi ' Selezione tipo caratteristica richiesta
Case HD_MODEL_NUMBER
hddfr = 55 ' Posizione nel buffer del ModelNumber
hddln = 40 ' Lunghezza nel buffer del ModelNumber
Case HD_SERIAL_NUMBE R
hddfr = 21 ' Posizione nel buffer del SerialNumber
hddln = 20 ' Lunghezza nel buffer del SerialNumber
Case HD_FIRMWARE_REV ISION
hddfr = 47 ' Posizione nel buffer del FirmwareRevisio n
hddln = 8 ' Lunghezza nel buffer del FirmwareRevisio n
Case Else
Err.Raise 10001, "Illegal HD Data type" ' Altre informazioni non disponibili
(Evoluzione futura)
End Select
Select Case mvarPlatform
Case "WNT"
' Per Win NT/2000 apertura handle al drive fisico
hdh = CreateFile("\\. \PhysicalDrive" & mvarCurrentDriv e, _
GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRIT E, _
0, OPEN_EXISTING, 0, 0)
Case "W95", "W98"
' Per Win 9X apertura handle al driver SMART
' (in \WINDOWS\SYSTEM da spostare in \WINDOWS\SYSTEM \IOSUBSYS)
' che comunica con il driver IDE
hdh = CreateFile("\\. \Smartvsd", _
0, 0, 0, CREATE_NEW, 0, 0)
Case Else
' Piattaforma non supportata (Win32S)
Err.Raise 10002, , "Illegal platform (only WNT, W98 or W95)" ' Altre piattaforme
non gestite
End Select
' Controllo validità handle
If hdh = 0 Then
Err.Raise 10003, , "Error on CreateFile"
End If
' Azzeramento strutture per l'I/O da driver
ZeroMemory bin, Len(bin)
ZeroMemory bout, Len(bout)
' Preparazione parametri struttura di richiesta al driver
With bin
.bDriveNumber = mvarCurrentDriv e
.cBufferSize = 512
With .irDriveRegs
If (mvarCurrentDri ve And 1) Then
.bDriveHeadReg = &HB0
Else
.bDriveHeadReg = &HA0
End If
.bCommandReg = &HEC
.bSectorCountRe g = 1
.bSectorNumberR eg = 1
End With
End With
' Richiesta al driver
DeviceIoControl hdh, DFP_RECEIVE_DRI VE_DATA, _
bin, Len(bin), bout, Len(bout), br, 0
' Formazione stringa di risposta
' da buffer di uscita
' L'ordine dei byte e' invertito
s = ""
For ix = hddfr To hddfr + hddln - 1 Step 2
If bout.bBuffer(ix + 1) = 0 Then Exit For
s = s & Chr(bout.bBuffe r(ix + 1))
If bout.bBuffer(ix ) = 0 Then Exit For
s = s & Chr(bout.bBuffe r(ix))
Next ix
' Chiusura handle
CloseHandle hdh
' Restituzione informazione richiesta
CmnGetHDData = Trim(s)
End Function[/code]
In the form, place a combobox with values 0,1,2,3 represents Primary Master, Primary Slave,
Secondary Master & Secondary Slave HDDs.
Code is
[code=vb]
Dim h As HDSN
Private Sub cmdGo_Click()
Dim hT As Long
Dim uW() As Byte
Dim dW() As Byte
Dim pW() As Byte
Set h = New HDSN
With h
.CurrentDrive = Val(cbDrive.Tex t)
lstInfo.Clear
lstInfo.AddItem "Current drive: " & .CurrentDrive
lstInfo.AddItem ""
lstInfo.AddItem "Model number: " & .GetModelNumber
lstInfo.AddItem "Serial number: " & .GetSerialNumbe r
lstInfo.AddItem "Firmware Revision: " & .GetFirmwareRev ision
lstInfo.AddItem ""
lstInfo.AddItem "Copyright: " & .Copyright
End With
Set h = Nothing
End Sub
Private Sub Form_Load()
cbDrive.ListInd ex = 0
End Sub[/code]
--------------------------------------------------------------------
Hope this will help you...
Thanks
RajComment
-
Originally posted by Rajkumar GSOne of best way to configure a tool to run only on a particular machine is using the MANUFACTURER SERIAL NUMBER OF THE HARD DISK, which is UNIQUE. ...Comment
-
Originally posted by Killer42Perhaps so. But don't forget to allow for cases where a HDD is replaced. They don't last forever. That's one of the things that makes "activation " such a pain.
Hi,
Yes, that's the ONLY problem where client can cheat us!
Do you have any !dea to overcome this?
RajComment
-
Comment