Question

Je sais que question a déjà été interrogé sur la génération d'un identifiant unique pour une machine, mais ma question est légèrement différente.

Je veux savoir s'il existe d'autres méthodes (appels API?) Pour obtenir des informations de matériel et PAS utiliser WMI. Je comprends MSDN que WMI est introduit dans Win2000 donc il ne semble pas être disponible en Win98. J'ai une application qui doit fonctionner même sur Win98 (je sais qu'il suce, mais que peut-on faire?) Et toujours se procurer des informations sur le matériel.

Était-ce utile?

La solution

Je l'ai fait à plusieurs reprises pour des projets de licence. Pour l'utilisation du numéro de série du disque dur:

private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);

Utilisez la VolumeSerialNumber qui est retourné par la fonction.

En outre, vous avez peut-être pensé à utiliser l'ID de produit Windows (Situé à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId). Attention, un grand nombre d'utilisateurs de Windows XP ont des copies piratées et partager les mêmes clés de ce produit.

Autres conseils

Vous pouvez combiner différentes informations sur le matériel afin de créer une clé unique.

Par exemple, ID CPU, adresse MAC, etc., etc. Vous les récupérer, de les combiner, les chiffrer et vous avez une représentation unique de la configuration matérielle de cette machine.

Essayez googler sur le sujet:. Comment lire les informations sur le matériel

D'après ce que je peux voir, il est très utile après CodeProject: Comment obtenir Informations sur le matériel (ID CPU, info Motherboard, série du disque dur, système d'information, ...) .

Regardez à travers la kernel32 du WinAPI et user32 bibliothèque. Il a toutes sortes de goodies comme EnumDisplayDevices, GetLogicalDrives , GlobalMemoryStatus , GetVolumeInformation , etc, etc. J'aime utiliser PInvoke pour parcourir l'API, car il me donne le code wrapper C # -. mais MSDN aura tout aussi bien dans le SDK de Windows

@ réponse de novatrust concernant la série du disque dur est un bon - mais il peut être combiné avec. J'ai fourni le lien API <=> à Pinvoke ci-dessus, mais un simple Google devrait fonctionner aussi bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top