デバイス情報の取得方法

[戻る]
ゆきなり 2007/10/11(木) 16:16:48
VC++ 6.0のMFC.exeで以下のアプリを作成しています。

デバイスマネージャに表示されている文字列
(例えばネットワークアダプタの「1394 ネットアダプタ #3」や
  「Realtek RTL8139/810x〜」等の文字列のことです)
を取得し、コンボボックスにリスト表示させるプログラムを課題として
提示されました。

RegOpenKeyEx関数、RegQueryValueEx関数を用いてレジストリから
デバイス情報を取得しようとしたのですが、まずデバイス情報が
格納されているキーをOpenすることが出来ません。

参照したパスは
HKEY_LOCAL_MACHINEの「SYSTEM\\ControlSet001\\Enum〜」なのですが、
Enum以下を指定するとエラーが返ってきてしまいます。

自分でテストキーを作成し、その文字列をリスト表示させる事は出来たので、
あとはレジストリからデバイス情報を取得し、表示させるだけなのですが…

お手数かと思いますが、皆様のお知恵を少し貸してください。

PATIO 2007/10/11(木) 16:27:01
まずはどんなエラーが返ってきているのかを確認するのが先決でしょう。
どういう状況でどういうエラーが起こっているのか、状況を把握するのが
最初の仕事です。
それ以降は状況によって対処が異なるので何ともいえません。

シャノン 2007/10/11(木) 16:59:24
俺の環境で見たら、ControlSet001 は Administrator にフルアクセスを許可している
が、Enum に書き込み権限を持つのは System だけなので、安直に KEY_ALL_ACCESS で開
いてたりすると失敗するかと。
ところで、見るべきは CurrentControlSet じゃないんだろうか。

ゆきなり 2007/10/12(金) 10:31:02
>ところで、見るべきは CurrentControlSet じゃないんだろうか。
そのとおりです。間違えていました。

>Enum に書き込み権限を持つのは System だけなので、安直に KEY_ALL_ACCESS で
>開いてたりすると失敗
KEY_READに変更したら問題なくレジストリを読むことが出来ました。
ありがとうございました!

ゆきなり 2007/10/12(金) 10:32:11
[[解決]]
また何かあったらよろしくお願いします。

古いスレッドには追加発言できません。