2017-04-14 9 views
-1

私は私のPCからハードディスクとマザーボードのシリアル番号を取得しようとしました。それはWindows 7の上でよく動作しますPCから一意のハードウェアIDを取得

しかし、CMDの同じコードはWindows XPでは機能しません。それはそれは、"のようなserialNumberをエラーで戻っが満たされるためには、Windows XPとのWin 8ではserialNumberを

wmic baseboard get product,Manufacturer,version,serialnumber // This is cmd to get MotherBoard serialnumber 

のためにそれをエラーを返しOEMが満たされるように表示またはWindows XPの場合は何も

wmic diskdrive get name,serialnumber,model // This is cmd to get serial num 

を返しませんOEMによって "

すべてのOSのidまたはserialnumberを返すことができ、一意でなければならない最高のPc Unique Idを探しています。

助けてください

ありがとうございます。

+0

何が必要ですか?これはライセンス機能、または固有のクライアントIDのためのものですか? OSのアップグレードやワイプ全体で一貫している必要がありますか?耐タンパー性が必要ですか? –

答えて

2

私はオンライン少しプロジェクト彼らが得るが見つかりました:彼らはそれを通じハッシュ

  • プロセッサID
  • マザーボードID
  • ボリュームシリアルID
  • MACアドレスID

MD5しかし、今では償却されているので、最高の賭けは同じであり、それをスルーする時間SHA512

まずあなたが自動的に行われていない場合は、インポートおよび参照する必要があります:

Imports System.Management 
Imports System.Security.Cryptography 
Imports System.Text 

次に機能はHWID(ハードウェアID)

Public Function Get_HWID() As String 
    'Information Handler 
    Dim hw As New clsComputerInfo 
    'Decalre variables 
    Dim hdd, cpu, mb, mac As String 
    'Get all the values 
    cpu = hw.GetProcessorId() 
    hdd = hw.GetVolumeSerial("C") 
    mb = hw.GetMotherBoardID() 
    mac = hw.GetMACAddress() 
    'Generate the hash 
    Dim hwid As String = GenerateSHA512String(cpu & hdd & mb & mac) 
    Return hwid 
End Function 

機能は、ハッシュを生成するために取得:

Public Shared Function GenerateSHA512String(ByVal inputString) As String 
    Dim sha512 As SHA512 = SHA512Managed.Create() 
    Dim bytes As Byte() = Encoding.UTF8.GetBytes(inputString) 
    Dim hash As Byte() = sha512.ComputeHash(bytes) 
    Dim stringBuilder As New StringBuilder() 
    For i As Integer = 0 To hash.Length - 1 
     stringBuilder.Append(hash(i).ToString("X2")) 
    Next 
    Return stringBuilder.ToString() 
End Function 

最後に、情報を取得するクラスrmation:私は管理これはあなたを助け、への参照を追加覚えていてくださいすることができthis project

希望のコードを見直し

Public Class clsComputerInfo 
    Friend Function GetProcessorId() As String 
     Dim strProcessorId As String = String.Empty 
     Dim query As New SelectQuery("Win32_processor") 
     Dim search As New ManagementObjectSearcher(query) 
     Dim info As ManagementObject 
     For Each info In search.Get() 
      strProcessorId = info("processorId").ToString() 
     Next 
     Return strProcessorId 
    End Function 
    Friend Function GetMACAddress() As String 
     Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration") 
     Dim moc As ManagementObjectCollection = mc.GetInstances() 
     Dim MACAddress As String = String.Empty 
     For Each mo As ManagementObject In moc 
      If (MACAddress.Equals(String.Empty)) Then 
       If CBool(mo("IPEnabled")) Then MACAddress = mo("MacAddress").ToString() 
       mo.Dispose() 
      End If 
      MACAddress = MACAddress.Replace(":", String.Empty) 
     Next 
     Return MACAddress 
    End Function 
    Friend Function GetVolumeSerial(Optional ByVal strDriveLetter As String = "C") As String 
     Dim disk As ManagementObject = New ManagementObject(String.Format("win32_logicaldisk.deviceid=""{0}:""", strDriveLetter)) 
     disk.Get() 
     Return disk("VolumeSerialNumber").ToString() 
    End Function 
    Friend Function GetMotherBoardID() As String 
     Dim strMotherBoardID As String = String.Empty 
     Dim query As New SelectQuery("Win32_BaseBoard") 
     Dim search As New ManagementObjectSearcher(query) 
     Dim info As ManagementObject 
     For Each info In search.Get() 
      strMotherBoardID = info("SerialNumber").ToString() 
     Next 
     Return strMotherBoardID 
    End Function 
End Class 

詳細情報:

ほとんどの共通のID HWIDに使用されます:CPU IDおよびMACアドレスユーザーがコンピュータを変更するか、またはより使用することを推奨したドライブなどをフォーマットした場合、それは実用的ではない正確ではないとして、SSベースのハードウェアIDハードドライブのシリアル番号

HWIDは、ライセンスシステムとして推奨されていません証明書システムまたはより複雑な認証。

+0

あなたのコードを試してみました...プロセッサIDはいくつかのPCで共通です.....それは失敗しました、マックアドレスのPCのために、ネットワークアダプタが必要なので、マザーボードのシリアルナンバーを取得しようとしました........それは勝利では動作しません8 –

+0

あなたは**参照**を追加しましたか....あなたはここで理解していない1つのIDのすべての値を組み合わせるので、コンピュータは4つの値が一緒に追加されます...私は窓8にあり、それは正常に動作します。 **コピー貼り付けの代わりにコードを理解してください** – Mederic

+0

私はWindows XPのためにそれを必要としています... –

関連する問題