- 締切済み
ActiveBasic コンピュータの個別のID(?)を取得したい
昔、本か何かで、『コンピュータには識別のIDのようなものがある』ということを読んだ記憶があり、それを取得したいと思います。 このIDというものは、不変で、コンピュータ1台1台違うものが発行(?)されるとか・・・ とりあえず、コンピュータを識別したいのです。 やり方をご存知の方がいらっしゃいましたら、ご教授下さい。 Win XP AB 4.23.00
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- DOUGLAS_
- ベストアンサー率74% (397/534)
[ANo.1] の DOUGLAS_ です。 >このCPUのIDとは、他のものとはかぶらないのでしょうか? >たとえば、AというメーカのCPUはすべてIDが一緒・・・なんて事は・・・? そういうことは存じません。 また、 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=28793 の Jitta さんの発言(2006-02-28 06:18)には、 >一部、ID のある CPU がありますが、デフォルトでは >「通知しない」ので、無いに等しいです。 とも書かれていました。 前回答は ヒント に過ぎません。 そもそも、コンピュータ の ユニーク(一意)な ID や識別子というものは、存在しないようですね。 http://okwave.jp/qa/q567510.html の [ANo.9] toysmith さん(2003-06-06)によると、 -- ここから引用 ------------------------- 「グローバルネットワーク上に存在するすべてのコンピュータのコンピュータ/ユーザごとに【確実に】一意なIDの自動割り当て、自動認証、同一IDの自動再割り当てする技術」は現在存在しません。 この技術の発明を待っているシステムがたくさんあり、それができれば特許で大もうけできるくらいの発明になります。 -- ここまで引用 ------------------------- だそうです。 まぁ、2つとも投稿日がかなり古いので、状況が変わっている可能性もありますが、上記の信憑性はさておき、WEB ページ などで コンピュータ を特定する場合、通例は、複数の(不変・不可変な)情報を組み合わせているようですので、前回答のようにして得られる情報を「&」で繋げば、概ね特定できるのではないでしょうか? ただし、飽くまで「概ね」ですが。。。 この種のご質問は、私のような曖昧な回答しか返せないのが普通かと存じますが、ご質問自体にその「目的や操作環境」が書かれていない場合は、さらに回答の返しようがないかなとも存じます。 >とりあえず、コンピュータを識別したい とのことですが、このご質問は ・「コンピュータの個別のID(?)」になり得るものは何か? ・それを ActiveBasic で取得するにはどうすればよいか? という2つの問題を孕(はら)んでいます。 この回答への補足で「目的や操作環境」を付けていただいても、私が ActiveBasic を存じませんので、申し訳ございませんが、お答えすることはできません。 もうしばらくこの スレッド を放置しておかれて、どなたか識者の目に止まれば有用な回答も得られるかも知れませんので、この回答に補足していただいても結構ですが、返答はしない(できない)かも知れませんので、予めお断りしておきます。 と、これだけでは、スレ汚しで終わってしまいますので、もう1つご参考になりそうなことを書いて、引っ込ませていただきますね。 前回答の「Win32_Processor」ですが、これは http://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx にある「Win32 Classes」の1つの クラス です。 「Win32 Classes」には、他にもたくさんの有用な情報を呈示してくれる クラス がありますので、ご覧になってみてください(ただし英語版しかありませんが。。。)。 左ペイン の ツリー図 の中から「Win32_~~」の「~~」の部分が知りたい内容に近いものを ダブルクリック すると、右ペイン に説明がでてきます。 お役に立てませんで申し訳ございませんでした。 <(_ _)>
- DOUGLAS_
- ベストアンサー率74% (397/534)
>『コンピュータには識別のIDのようなものがある』 というのは存じないのですが、 >コンピュータを識別したい という理由でしたら、CPU の ID を取得するというのはどうでしょうか? ただし、私は「ActiveBasic」なるものを存じませんので、VBA(Visual Basic for Application)と WSH(Windows Scripting Host)の両方で試行した コード を記載いたします。 「ActiveBasic」に翻訳してお試しください。 '-- ここから -------------------------------------------------------------- Set colProcessors = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select ProcessorId from Win32_Processor") For Each objProcessor In colProcessors WScript.Echo objProcessor.ProcessorID (VBA の場合は、MsgBox objProcessor.ProcessorID) Next Set colProcessors = Nothing '-- ここまで -------------------------------------------------------------- 参考URL) ●Win32_Processor Class http://msdn.microsoft.com/en-us/library/aa394373(VS.85).aspx 1行目は Set colProcessors = CreateObject("WbemScripting.SWbemLocator").ConnectServer.ExecQuery("Select ProcessorID From Win32_Processor") でもいけました。
お礼
ご回答ありがとうございます。 CPUにはIDがあるんですか・・・ 初めて知りました。 ところで、このCPUのIDとは、他のものとはかぶらないのでしょうか? たとえば、AというメーカのCPUはすべてIDが一緒・・・なんて事は・・・? ご教授いただけたら幸いです