Private Function 硬盤序列號() As String
創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營銷策劃、成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、小程序制作、H5建站、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗、成都營銷網(wǎng)站建設(shè)資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。
Try
Dim myInfo As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 1\Target Id 0\Logical Unit Id 0")
硬盤序列號 = Trim(myInfo.GetValue("SerialNumber"))
Catch
Try
Dim myInfo As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 1\Target Id 0\Logical Unit Id 0")
硬盤序列號 = Trim(myInfo.GetValue("SerialNumber"))
Catch
硬盤序列號 = ""
End Try
End Try
End Function
試下,如果返回為空,則表示失敗。
在本機(jī)win8win8.1有效,不過好像在有些機(jī)器上沒用。
思路是:
讀取電腦硬件的信息,用隨機(jī)數(shù)加工這些信息后在注冊表中做個記錄,用這個記錄生成注冊碼送回給你,你按特定的方法生成序列號,你的小程序收到序列號后還原成數(shù)據(jù),數(shù)據(jù)比較注冊表中的記錄,如果正確就加入第二部分注冊的信息完成注冊.你的程序每次打開時,先比對硬件信息-第一注冊信息-第二注冊信息,看這三者是否統(tǒng)一,不統(tǒng)一的就是使用期軟件.
也可以省了第一注冊信息,直接發(fā)硬件信息給你生成序列號,其他的相同.
VB?我不熟,下面是用匯編寫的,我運(yùn)行過可以的。
//--------------------------------
.model?small
.586
.stack
.code
idstring?db?49?dup('$')
start:
mov?ax,@code
mov?ds,ax
lea?di,idstring
mov?eax,80000002h
cpuid
mov?dword?ptr?[di],eax
mov?dword?ptr?[di+4],ebx
mov?dword?ptr?[di+8],ecx
mov?dword?ptr?[di+12],edx
mov?eax,80000003h
cpuid
mov?dword?ptr?[di+16],eax
mov?dword?ptr?[di+20],ebx
mov?dword?ptr?[di+24],ecx
mov?dword?ptr?[di+28],edx
mov?eax,80000004h
cpuid
mov?dword?ptr?[di+32],eax
mov?dword?ptr?[di+36],ebx
mov?dword?ptr?[di+40],ecx
mov?dword?ptr?[di+44],edx
mov?ah,09h
lea?dx,idstring
int?21h
mov?ah,4ch
int?21h
end?start
//-------------------------------------------------------
程序確實可以執(zhí)行,輸出CPU的ID等信息。
注意:DOS下或MS-DOS下使用。