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. P>
apprécier les astuces, les idées, le code de l'échantillon! p>
6 Réponses :
Vous pouvez utiliser WMI avec C # pour obtenir un peu d'informations sur le matériel. P>
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. P>
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" :)
Vous pouvez utiliser System.Management Espace de noms pour obtenir Toutes les choses liées aux adresses matérielles, processorid, mac, et beaucoup plus d'informations que vous pouvez alors hachain ensemble. P>
Regardez cet article: P>
http://www.codeproject.com/kb/system/gethardwareInformation.aspx < / a> p>
Pour développer un peu de réponses et d'autres réponses: l'adresse MAC de la ou des cartes réseau sera unique, même si les machines utilisent tous les mêmes composants. Je commencerais avec ça. Deuxièmement, vous devriez pouvoir obtenir des numéros de série de la carte mère et de la CPU, comme le dit JP. Ceux-ci, ainsi que l'adresse MAC du NICH physique, devraient être suffisamment faciles à identifier de manière unique une machine. Sachez simplement que tous ceux-ci peuvent changer si des pièces sont remplacées.
L'adresse MAC d'une carte réseau peut être définie par logiciel, de sorte que vous ne pouvez pas compter sur celui-ci étant unique. D'autre part, je pense que le disque principal + l'adresse MAC + processorid + carte mère pourrait être un pari sûr.
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) code>. Je suppose que tu veux plus que ça? P>
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?
Vous pouvez chercher à utiliser 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. P>
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. P>
Il existe également quelques surcharges disponibles pour ceux d'entre vous qui souhaitent que le GUID soit formaté de manière particulière. P >
L'échantillon en direct suivant émettra le code GUID généré, le code source est également ci-dessous. p>
+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.
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()); }
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.
Voici un bon départ avec WMI ... < Pré> xxx pré>
Vous pouvez le faire avec de nombreux matériels et proposer une solution. P> P>
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.
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 i> le client :)