Comment faire pour obtenir (presque) unique identifiant du système dans une plate-forme de chemin?

Je suis à la recherche d'un moyen d'obtenir un certain nombre qui sera presque sûrement changer lors de l'exécution du code sur des machines différentes et presque certainement rester le même entre les deux s'exécute sur la même machine.

Si je faisais ça comme un script shell sous Linux, je voudrais utiliser quelque chose comme ceci:

{ uname -n ; cat /proc/meminfo | head -n1 ; cat /proc/cpuinfo ; } | md5sum

Mais j'ai besoin de ce C++ (avec boost) et au moins sur Windows, Linux et Mac.

  • Il ya une très bonne chance que ne vous donnera pas des résultats cohérents sur la même machine; la plupart des Processeurs modernes ont dynamique de la fréquence de mise à l'échelle, et /proc/cpuinfo reflète la fréquence instantanée!
  • une double
  • Cela ressemble le programme va être mis en réseau (sinon, un ID de sons inutiles). Dans ce cas, vous pourriez être mieux si vous obtenez un ID unique à partir du serveur de votre programme se connecte à et de les stocker localement à des fins d'utilisation ultérieure.
  • Charlesworth: Bien, c'est juste un détail, j'ai toujours pu grep seulement la non-évolution des champs.
  • C.: en Fait, j'ai besoin sur le serveur que l'application a été copié (y compris l'ensemble de ses fichiers), donc cela ne marcherait pas... mais c'est une bonne idée de toute façon 🙂
  • Il peut être aussi facile que de trouver le chemin où le fichier exécutable se trouve. Si que de changements depuis la dernière fois, alors vous savez qu'il a été copié. VMWare Workstation fait que, par exemple, et demande à l'utilisateur "avez-vous copie ce ou avez-vous vous déplacer?" Si déplacé, l'ID est conservé. Si copiés, un nouvel IDENTIFIANT est créé.
  • Que penser de l'utilisation de l'adresse mac de la zone locale? Vous devriez écrire le code indépendant de plate-forme pour le chercher, mais il ne serait que de quelques lignes.

InformationsquelleAutor cube | 2013-05-31