VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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を指定した場合で同じ戻り値になるので、
両者を区別することができません。

何かよい方法はございませんでしょうか?


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -