PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
17276 02/04/18 15:00:35 RE(3):PB7.0: レジストリサブキーの削除について By JSD
17275 02/04/18 15:00:33 RE(2):PB7.0: レジストリサブキーの削除について By JSD
17268 02/04/18 00:41:37 RE(1):PB7.0: レジストリサブキーの削除について By Taka
17257 02/04/15 11:07:58 PB7.0: レジストリサブキーの削除について By JSD

カテゴリ:スクリプトの記述
日付:2002年04月18日 00:41 発信者:Taka
題名:RE(1):PB7.0: レジストリサブキーの削除について

JSDさん、おはようございます。

>値の削除自体はできるのですが、ABCDの中身ではなく、ABCDそのものを削除したいのです。
>こういった場合、PBのシステム関数ではできないので

? PBの標準関数だけで可能ですけど...

RegistryDelete(\"HKEY_LOCAL_MACHINE\\SOFTWARE\\TEST\\TEST1\\ORACLE\\ABCD\",\"\")

PB6.5では、コレ一発で削除できるはずです。PB7.xでも同じでしょう。


どうしてもAPIを使いたいのでしたら、

>l_rtn = RegOpenKeyEx(HKEY_LOCAL_MACHINE , \"SOFTWARE\\TEST\\TEST1\\ORACLE\\ABCD\",0,1, hKey)
>l_rtn = RegDeleteKey(hKey,\"SOFTWARE\\TEST\\TEST1\\ORACLE\\ABCD\")
>l_rtn = RegCloseKey(hKey)

>使い方、書き方など間違っているのでしょうか?どうかアドバイスお願いします。

パスの指定が違います。
RegOpenKeyExでは \"SOFTWARE\\TEST\\TEST1\\ORACLE\" までとし、
RegDeleteKeyでは \"ABCD\" だけ指定してください。

あと、RegOpenKeyExの第4引数に 1 を与えているようですが、ここはアクセス権を示すフラグパターンです。
1 だと KEY_QUERY_VALUE しかアクセス権がないので、更新できないんじゃないですか?

よくあるサンプルのように、KEY_ALL_ACCESS を与えたほうが確実でしょう。
冗長的に書くと以下のように定義します。

constant ulong KEY_QUERY_VALUE        = 1 //0x0001
constant ulong KEY_SET_VALUE          = 2 //0x0002
constant ulong KEY_CREATE_SUB_KEY     = 4 //0x0004
constant ulong KEY_ENUMERATE_SUB_KEYS = 8 //0x0008
constant ulong KEY_NOTIFY             = 16 //0x0010
constant ulong KEY_CREATE_LINK        = 32 //0x0020

constant ulong STANDARD_RIGHTS_ALL = 2031616 //0x001F0000
constant ulong SYNCHRONIZE         = 1048576 //0x00100000

constant ulong KEY_ALL_ACCESS = &
(STANDARD_RIGHTS_ALL + KEY_QUERY_VALUE + KEY_SET_VALUE + KEY_CREATE_SUB_KEY + &
 KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + KEY_CREATE_LINK) - SYNCHRONIZE

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.