※ ChatGPTを利用し、要約された質問です(原文:一意なID)
コンピュータ内で一意な識別子を作る方法
このQ&Aのポイント
コンピュータ内で一意な識別子を作るためには、ユーザーID、OSシリアルナンバー、MACアドレスなど複数の要素を組み合わせることが有効です。
ユーザーIDはレジストリのHKEY_USERS\S-?-?-??-???に格納されていますが、複数存在する場合があります。
MACアドレスの場合、NICが複数刺さっている場合でも、プライマリの検出方法を使用することで一意な値を取得できます。
コンピュータ内でなるべく不変で一意な値を組み合わせて、ネットワーク上でほぼ確実に一意な識別子を作りたいと思います。
ユーザー名やコンピュータ名だけでは一意性に欠けるので、ユーザーIDとOSシリアルナンバー、MACアドレスなども足したいのですが、それらは何を参照すればいいのでしょうか?
レジストリのパスや関数名などあれば教えてください。
ユーザーIDはHKEY_USERS\S-?-?-??-???・・・に入っていますが、たまにここに複数あって、どれが自分のIDなのかわかりません。
MACアドレスもNICが複数刺さっている場合のプライマリの検出方法など。
ほかにもここに挙げたもの以外に、何かできるだけ一意で不変なものがあったら、教えてください。
IPなど頻繁に変わる可能性があるものはだめです。
開発環境
XP Pro SP1 + VB.NET
言語はVB.NETですが、これに依存しない手段でもかまわないのでVBのカテゴリには入れてません
実行環境
2000またはXP
お礼
やはり、MACアドレスは不変でもないし、一意でもないのですね。 でも頻繁に変わらないと思ったのですが、そうかVMとかだといつ変わるかわかりませんね・・・。 うーん、難しいです。 VMを切り捨てるか・・・。 だからかぶる可能性が少ないものを色々と組み合わせて・・・そうですね、確率論とか勉強してないんでわかりませんが、日本人口の1000分の1がこのソフトを使って、かぶる確立が数億分の1なら問題ないでしょうか。 ユーザIDとOSプロダクトIDとMACアドレス。 この3つでかなり重複確立は低くなると思うんですが、どうなんでしょう。