• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一意なID)

コンピュータ内で一意な識別子を作る方法

このQ&Aのポイント
  • コンピュータ内で一意な識別子を作るためには、ユーザーID、OSシリアルナンバー、MACアドレスなど複数の要素を組み合わせることが有効です。
  • ユーザーIDはレジストリのHKEY_USERS\S-?-?-??-???に格納されていますが、複数存在する場合があります。
  • MACアドレスの場合、NICが複数刺さっている場合でも、プライマリの検出方法を使用することで一意な値を取得できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.9

『ほぼ確実』がどの程度【確実】を求めているのかが問題となります。 エミュレータ(VirtualPCやVMWareなど)環境ではMacアドレスをユーザが設定することが当然のように行われます。 「Macアドレスは世界中で一意」というのは建前です。 「グローバルネットワーク上に存在するすべてのコンピュータのコンピュータ/ユーザごとに【確実に】一意なIDの自動割り当て、自動認証、同一IDの自動再割り当てする技術」は現在存在しません。 この技術の発明を待っているシステムがたくさんあり、それができれば特許で大もうけできるくらいの発明になります。 現在の技術ではサーバーで生成した一意なIDをユーザごとに保存させるくらいしか【確実な】方法はありません。 質問が「ネットワーク上」となっており、「ネットワークセグメント上」でないため、グローバルネットワークを想定しています。 ネットワークセグメント内でよいのであれば、Macアドレスが使えますがMacアドレスは普遍ではありません。

haporun
質問者

お礼

やはり、MACアドレスは不変でもないし、一意でもないのですね。 でも頻繁に変わらないと思ったのですが、そうかVMとかだといつ変わるかわかりませんね・・・。 うーん、難しいです。 VMを切り捨てるか・・・。 だからかぶる可能性が少ないものを色々と組み合わせて・・・そうですね、確率論とか勉強してないんでわかりませんが、日本人口の1000分の1がこのソフトを使って、かぶる確立が数億分の1なら問題ないでしょうか。 ユーザIDとOSプロダクトIDとMACアドレス。 この3つでかなり重複確立は低くなると思うんですが、どうなんでしょう。

すると、全ての回答が全文表示されます。

その他の回答 (12)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

こことか、参考になるかと。 ただ、時刻も計算要素になるので、「不変」という点で希望にあわないかも。

参考URL:
http://dobon.net/vb/dotnet/programing/guid.html
haporun
質問者

お礼

うーん、この作ったIDは保存しておくつもりですが、再度同じコンピュータで作ったときに、できれば同じ値を生成したいのです。 これだとちょっとつらいですね。 回答ありがとうございます。

すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

もっとも簡単な方法としては、固定IPアドレスを使う方法だと思います。

haporun
質問者

お礼

万人に使われることを想定しているので、固定IPと仮定はできません。 それに、NAT環境で複数のマシンでグローバルIPを共有する場合は意味がないし、プロキシを通すことも考えており、まったくグローバルIPに触れられない場合、プライベートIPも意味がありません。

すると、全ての回答が全文表示されます。

関連するQ&A