投稿日 | : 2007/04/29(Sun) 19:11 |
投稿者 | : TN |
Eメール | : |
URL | : |
タイトル | : RegOpenKeyExのエラー |
いつもお世話になっております。
http://homepage1.nifty.com/MADIA/vb/API/RegOpenKeyEx.htm
などの例を参考に、Windows XP、VB6(SP6)環境でRegOpenKeyEx関数を
使ってレジストリの値を取得しようとしています。
ところが、HKEY_LOCAL_MACHINE\SECURITYという実在するキーを
Openしようとすると、戻り値はアクセス拒否の5になります。
Dim Ret As Long
Dim Hensu As Long
Ret = RegOpenKeyEx(&H80000002, "SECURITY", 0, 0, Hensu)
サブキーも変数も存在しないキーの場合にエラーになるのかと思い、
同様のキーHKEY_CURRENT_USER\Networkで試すと、こちらの戻り値は
成功の0となりました。
Ret = RegOpenKeyEx(&H80000001, "Network", 0, 0, Hensu)
エラーになるHKEY_LOCAL_MACHINE\SECURITYの方は、レジストリエディタで
画面右の名前(既定)をダブルクリックすると、次のような赤バツのエラー
メッセージが表示されます。
値の編集エラー
を編集できません。値の内容を読み取り中に、エラーが発生しました。
エラーにならないHKEY_CURRENT_USER\Networkの方は、レジストリエディタの
画面上ではデータに(値の設定なし)と表示されていて、HKEY_LOCAL_MACHINEの
方と見た目は同じですが、ダブルクリックすれば文字列の編集ダイアログが
表示され、値を編集できます。
存在しないキーを指定した場合はエラーにしたいのですが、現状ではその場合と
存在するHKEY_LOCAL_MACHINE\SECURITYを指定した場合で同じ戻り値になるので、
両者を区別することができません。
何かよい方法はございませんでしょうか?