API en C # pour la saisie des ID de processeur et des données série / lecteur
Question
Je sais que je peux saisir l'identifiant de la CPU et le numéro de série du volume d'un disque physique en interrogeant WMI, mais WMI prend généralement son temps. Quelles autres options plus rapides, le cas échéant, sont disponibles pour récupérer ces informations? Existe-t-il des API Win32 qui permettraient cela?
Modifier: Permettez-moi de préciser. Par identifiant de CPU, je fais référence à la même valeur que celle obtenue en interrogeant les propriétés d'instance WMI suivantes:
- Win32_Processor :: ProcessorId
- Win32_LogicalDisk :: VolumeSerialNumber
La solution
N'oubliez pas que l'identifiant de la CPU n'est pas toujours disponible.
Au fait, qu'essayez-vous d'accomplir? Si vous souhaitez générer une clé unique pour une instance d’ordinateur, cochez la Génération de clé unique (Finger). Imprimé) pour un ordinateur sous licence publié par Sowkot Osman chez Codeproject; il peut vous donner des indices (lisez également les commentaires).
Autres conseils
Vous pouvez interroger le registre Windows pour obtenir les informations sur le lecteur, mais vous n’êtes pas sûr du processeur. Il semble que votre question soit abordée dans ce SO q / a (illustre un certain nombre de méthodes permettant d’obtenir cette information, mais pour des raisons de rapidité, peut-être que l’obtenir à partir du registre est votre meilleur choix):
WMI extrait en réalité une bonne partie de ses données du registre. Le système stocke de nombreuses informations sur le système et il est évidemment très rapide de réagir.
Si vous souhaitez verrouiller la carte mère, le processeur et / ou le disque dur pour des raisons de licence, vérifiez les valeurs suivantes:
HKLM \ HARDWARE \ DESCRIPTION \ System \ BIOS \ BaseBoardManufacturer
HKLM \ HARDWARE \ DESCRIPTION \ System \ BIOS \ BaseBoardProduct
HKLM \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor \ 0 \ Identifier
HKLM \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor \ 0 \ ProcessorNameString
HKLM \ LOGICIEL \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId
HKLM \ LOGICIEL \ Microsoft \ Windows NT \ CurrentVersion \ ProductId
HKLM \ LOGICIEL \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx
HKLM \ HARDWARE \ DESCRIPTION \ System \ MultifunctionAdapter \ 0 \ DiskController \ 0 \ DiskPeripheral \ 0
(peut être spécifique aux cartes avec RAID en cours d'utilisation)
Si vous souhaitez obtenir le disque en série sans WMI, émettez un appel DeviceIoControl au périphérique de lecteur physique. Exemple de code dans VB.NET: http://www.dreamincode.net/code/snippet429.htm
Pour CPUID, essayez ceci: http: // devpinoy .org / blogs / cvega / archive / 2006/04/07 / 2658.aspx
Pour le numéro de série en volume, essayez ceci: http://www.eggheadcafe.com/articles /20021019.asp
Google est votre ami; -)
J'aime GetSystemInfo , mais cela ne se produit pas. ne couvrez pas les disques physiques ..