• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:個別の情報の取得)

C/C++でパソコンの個別の情報を取得する方法

このQ&Aのポイント
  • Windows APIを使用して、C/C++でパソコンの個別の情報を取得することができます。
  • CPUのクロック数やWindowsのバージョンなど、一部の情報は取得可能ですが、より細かい情報を取得する方法はあるでしょうか?
  • メーカーや機種によって異なる情報を取得するAPIは存在するので、同じCPUやWindowsでも個別の情報を判断することができます。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

Windows2000、XP(一部NT4.でも可)であれば、WMIを使用します。 C++からも使えますが、C++の厳格な型定義などの性質上使い方が結構面倒くさいです。 WMIを使う際は、オートメーションが手軽に使える言語(VBやVBS、VBA、Delphi等)をお勧めします。 http://wmifun.atinfinity.net/ BIOSのシリアルナンバーも取れます。 http://wmifun.atinfinity.net/wmisample/win32_bios.html

rikiponpon
質問者

補足

実は、Cは補助的な役割でやりたいと考えています。 というのも、基本はJAVAで作っているのですが、 JAVAではPCの深いところは触れないと聞きました。 (SOPA,WSDLなどと一緒に使うためJAVAを選択しました。) ですので、CでDLLを作りJAVAのJNIを使いそれを利用したいと考えています。 でいまVBでもJAVAようのDLLを作ることができるか今調べてみたら 作れるみたいです(実際にやってみないとなんともいえませんが) VBかC++どちらを使うかはこれから検討してみます。 ところで質問なのですが、 BIOSのシリアルナンバーはユニークなのでしょうか? 基本的な質問で申し訳ありません。 そして、ほかにユニークなナンバーは何かあるのでしょうか?

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>BIOSのシリアルナンバーはユニークなのでしょうか? 個々の製品についてはユニークなんじゃないですか? 確証はもてませんが。 >でいまVBでもJAVAようのDLLを作ることができるか今調べてみたら >作れるみたいです(実際にやってみないとなんともいえませんが) 作れるけど呼べたかなぁ? VBで作成可能なDLLはActiveX DLLと呼ばれるものなんで、 WindowsAPIを呼ぶような感じではだめだったような。 Delphiなら普通のDLLもActiveX DLLも両方作れるのは知っているんですが。

noname#5537
noname#5537
回答No.1

どういう目的でしょうか? それによって回答が変わってくると思います。 マシンを識別するということでしたら, MAC アドレスを使うという方法があります。 ネットワークカードごとに固有なので。 ネットワークカードが無いと困りますが。 あとは, GUID でも生成してみるとか。

rikiponpon
質問者

補足

いま、大学の卒業研究で認証を必要とするシステムを勉強しています。 そこで、利用している個人ではなく、 個々のPCを識別させたいと考えています。 その識別する時に偽造がおこるのをなるべく避けたいのですが、 MACアドレスは2000などでは自分で変えようとすれば 変えられるようなことをどこかで読んだ記憶があるのです。 ですので、個人では変えることのできない (理論上変えられるとしても簡単にできない) 物を利用したいと考えています。 GUIDの方は知らなかったのでgoogleで調べてみました。 そうすると以下の情報が手に入りました。 http://www.atmarkit.co.jp/icd/root/52/94084052.html このことより、MACアドレスや時間などで生成されているとわかりました。 まだ詳しくは調べてないのでなんともいえないのですが、 力のある人だとこのような情報は偽造されル可能性があるのではないかと不安になってします。 もちろん暗号化はしますが。。。 ですので、XPのようにCPUのシリアル番号などハードウェア的に 認証させたいと考えています。 (XPの認証はたしかそんな感じだったと思います)

関連するQ&A