Come ottenere la firma macchina unica, senza WMI?
-
22-08-2019 - |
Domanda
So che un è già stato chiesto di generare un ID univoco per una macchina, ma la mia domanda è leggermente diversa.
Vorrei sapere se ci sono altri metodi (chiamate API?) Per ottenere informazioni hardware e non utilizzare WMI. Ho capito da MSDN che WMI è introdotto in Win2000 modo che doesnt sembra essere disponibile in Win98. Ho una domanda che deve funzionare anche su Win98 (lo so che fa schifo, ma cosa si può fare?) E ancora entrare in possesso di informazioni sull'hardware.
Soluzione
Ho fatto questo più volte per i progetti di licensing. Per l'unità Usa numero di serie del disco:
private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);
Utilizza il VolumeSerialNumber
che viene restituito dalla funzione.
Inoltre, si può avere pensato di usare il numero di serie di Windows (Situato a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId
). Attenzione, un gran numero di utenti di Windows XP hanno copie pirata e condividere le chiavi stesso prodotto.
Altri suggerimenti
È possibile combinare diverse informazioni hardware al fine di creare una chiave univoca.
Ad esempio, ID CPU, MAC address ecc ecc Tu li recupera, combinarle, li cifrare e si dispone di una rappresentazione unica della configurazione hardware di questa macchina.
Prova googling sul tema:. Come leggere le informazioni hardware
Da quello che posso vedere non v'è un post molto utile in CodeProject: Come Ottenere Informazioni Hardware (ID CPU, Scheda principale Info, hard Disk Serial, informazioni di sistema, ...) .
Guardare attraverso kernel32 del WinAPI e user32 biblioteca. Ha tutti i tipi di chicche come EnumDisplayDevices
, GetLogicalDrives
, GlobalMemoryStatus
, GetVolumeInformation
, ecc, ecc mi piace usare PInvoke per navigare l'API dato che mi dà la C # codice wrapper -. ma MSDN avrà tutto anche in Windows SDK
@ risposta di novatrust per quanto riguarda il numero di serie del disco rigido è una buona - ma può essere combinato con altri. Ho fornito il collegamento <=> API per PInvoke sopra, ma una semplice Google dovrebbe funzionare così.