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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.