VC++ 6.0のMFC.exeで以下のアプリを作成しています。
デバイスマネージャに表示されている文字列
(例えばネットワークアダプタの「1394 ネットアダプタ #3」や
「Realtek RTL8139/810x~」等の文字列のことです)
を取得し、コンボボックスにリスト表示させるプログラムを課題として
提示されました。
RegOpenKeyEx関数、RegQueryValueEx関数を用いてレジストリから
デバイス情報を取得しようとしたのですが、まずデバイス情報が
格納されているキーをOpenすることが出来ません。
参照したパスは
HKEY_LOCAL_MACHINEの「SYSTEM\\ControlSet001\\Enum~」なのですが、
Enum以下を指定するとエラーが返ってきてしまいます。
自分でテストキーを作成し、その文字列をリスト表示させる事は出来たので、
あとはレジストリからデバイス情報を取得し、表示させるだけなのですが…
お手数かと思いますが、皆様のお知恵を少し貸してください。
まずはどんなエラーが返ってきているのかを確認するのが先決でしょう。
どういう状況でどういうエラーが起こっているのか、状況を把握するのが
最初の仕事です。
それ以降は状況によって対処が異なるので何ともいえません。
俺の環境で見たら、ControlSet001 は Administrator にフルアクセスを許可している
が、Enum に書き込み権限を持つのは System だけなので、安直に KEY_ALL_ACCESS で開
いてたりすると失敗するかと。
ところで、見るべきは CurrentControlSet じゃないんだろうか。
>ところで、見るべきは CurrentControlSet じゃないんだろうか。
そのとおりです。間違えていました。
>Enum に書き込み権限を持つのは System だけなので、安直に KEY_ALL_ACCESS で
>開いてたりすると失敗
KEY_READに変更したら問題なくレジストリを読むことが出来ました。
ありがとうございました!
また何かあったらよろしくお願いします。