レジストリキーの削除について

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
rabi

レジストリキーの削除について

#1 投稿記事 by rabi »

レジストリキーの削除方法を教えて下さい。

レジストリの構造は下記の通り
---------------------------------------------------
HKEY_CURRENT_USER - Software - AAAA -???? - ????
                                -???? - ????
                                     - ????
                                     - ????
※????は、キー名、キーの数が不定です。
使用する環境は、WIndows XP Pro
---------------------------------------------------

不要な、「AAAA」配下のレジストリキーを削除したいのですが、
「RegDeleteKey」の場合、「WindowsNT系OSでは、サブキーを持つキーを削除することはできません。」とある為、WindowsXPでは、削除できない・・・・・んですよね??

質問ですが、
WindowsXPでも使用できる、サブキー指定で配下のキーも削除可能な関数、方法があれば教えて下さい。
または、サブキー配下のキー一覧を参照する様な関数、方法があれば教えて下さい。


以上、宜しくお願い致します。m(_ _)m
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#2 投稿記事 by イグトランス »

RegEnumKeyEx関数を使えばサブキーの値を列挙できると思います。
これでサブキーを全て削除してから親を削除すればよいのではないでしょうか。
(ただしそれを再帰的に行う必要があるでしょう)
rabi
記事: 1
登録日時: 2006年5月25日(木) 20:47
お住まい: 神奈川

#3 投稿記事 by rabi »

ご回答有難うございます。

RegEnumKeyEx関数と、いう事ですが、ActiveBasicのHELPを参照しましたが、載っていませんでした。
他のReg関数と同様に普通に使うことが出来るんでしょうか?
または、別に、何か「ワザ」が必要なんでしょうか?

私自身、まだ、ActiveBasic使って間もないもので・・・・。

恐れ入りますが、ご教示願います。m(_ _)m
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#4 投稿記事 by イグトランス »

ABのヘルプに載っていない関数は大抵自分でDeclare宣言を書く必要があります。

さて,もっと簡単な方法を見つけました。
SHDeleteKey関数です。この関数はサブキーが有っても平気であるようです。
SHDeleteKey - MSDN Libyrary

プロジェクト内のどこかにこれを書けばこのSHDeleteKey関数は使えます。

コード: 全て選択

Declare Function SHDeleteKey Lib "shlwapi.dll" Alias "SHDeleteKeyA" (hKey As HKEY, pszSubKey As BytePtr) As DWord
使い方はRegDeleteKey関数と全く変わりません。

ただしshlwapi.dllの関数ですので,Win 95/NT4ではIE4以上をインストールする必要があります。
(Win 98/2000以上なら標準でIE4以上が入っているので,問題にはなりません)
Win 95/NT4を使う方にはIE4以上を入れるようお願いすることになります。
自分専用プログラムを書くときには全く気にする必要はないであろうことですが。
返信する