7
votes

Obtenez des identificateurs système uniques en C #

Quel type d'identificateurs système "uniques" peut être facilement obtenu à l'aide de C # (à hachage, puis d'identifier un système)? Je ne pouvais plus que la taille du disque dur de hachage et des choses comme ça, mais je dois identifier et distinguer les ordinateurs qui sont tous construits par les mêmes composants afin que je ne puisse pas y aller.

apprécier les astuces, les idées, le code de l'échantillon!


2 commentaires

Je ferais attention à cela, que vous ne faites pas que vos clients vous détestent. Ils devraient être capables de changer de cartes réseau, de disques durs et de taille de la mémoire sans vous en dire.


Oh, cette exigence vient réellement de le client :)


6 Réponses :


2
votes

Vous pouvez utiliser WMI avec C # pour obtenir un peu d'informations sur le matériel.

Les ID du disque dur et l'adresse MAC Ethernet sont deux identifiants uniques communs utilisés dans les schémas d'identification du système. L'adresse MAC est, en théorie, unique par carte réseau.


2 commentaires

En théorie, mais en pratique, il n'y a pas d'identifiant unique unique qui pourrait être utilisé, étant donné qu'il y a des tonnes et facilement accessibles, il est préférable de saisir deux ou trois et de les combiner pour créer une chaîne unique (ou un hachage).


Oui je suis d'accord. C'est pourquoi le "en théorie" :)




6
votes

présumer que vous parlez de Windows, chaque installation de Windows a une carte d'identité d'un produit unique (que vous pouvez voir lorsque vous affichez les propriétés de mon ordinateur). Je pense que cela est stocké dans hkey_local_machine \ logiciel \ Microsoft \ Windows NT \ CurrentVersion: ProductID (reg_SZ) . Je suppose que tu veux plus que ça?


1 commentaires

Qu'en est-il lorsque l'image de Windows OS est copiée dans un autre ordinateur? Cette clé de registre sera-t-elle la même sur la machine à cloner?



2
votes

Vous pouvez chercher à utiliser GUID

Qu'est-ce que c'est Un GUID

Pour ceux d'entre vous qui ne savent pas, un IDVIFICIFICOR (prononcé Goo'id - GOO'ID - globalement unique) est un entier 128 bits qui peut être utilisé pour identifier de manière unique quelque chose. Vous pouvez stocker des utilisateurs ou des produits dans votre base de données et vous souhaitez en quelque sorte identifier de manière unique chaque ligne de la base de données. Une approche commune consiste à créer un entier d'autocramentating, une autre manière consisterait à créer un GUIG pour vos produits.

Comment créer un GUID en C #

La méthode du GUID peut être trouvée dans l'espace de noms système. Le système de méthode GUID.NewGuid () initialise une nouvelle instance de la classe GUID.

Il existe également quelques surcharges disponibles pour ceux d'entre vous qui souhaitent que le GUID soit formaté de manière particulière.

L'échantillon en direct suivant émettra le code GUID généré, le code source est également ci-dessous. xxx


3 commentaires

+1 La mise en œuvre de Microsoft des GUID utilise l'adresse MAC et l'heure actuelle, de sorte qu'ils sont à peu près une manière garantie de créer des identificateurs qui seront uniques par ordinateur.


Je pense que le lien est cassé


@ Andersfinnjørgensen - Merci, j'ai tiré le contenu du lien dans la réponse.



2
votes

Carte réseau Adresse MAC:

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    // probably need to do some filtering on ni.NetworkInterfaceType here
    Console.WriteLine(ni.GetPhysicalAddress());
}


2 commentaires

Bien que ce soit une bonne idée, je pense que cela échouerait si le système n'a pas de NIC!


Ce n'est pas une bonne idée, car cet identifiant change lorsque l'utilisateur désactive une connexion ou si un logiciel installe une connexion virtuelle.



10
votes

Voici un bon départ avec WMI ... < Pré> xxx

Vous pouvez le faire avec de nombreux matériels et proposer une solution.


3 commentaires

J'ai essayé ça ... mais je vois que ce sont des jours d'autre que les Nos série sont entretenus. Board-Mère, processeur ... Mac est en train d'être modifié en changeant de Nic ... Que choisir?


Comme la série Win32_Baseboard ne renvoie plus de valeur dans la plupart des cas, votre meilleur pari est processorid dans Win32_Processor


Notez que processorid est égal pour tous les processeurs du même type. Si vous testez deux processeurs I7-FOOBAR, les deux auront le même identifiant.