プロが教えるわが家の防犯対策術!

VBScriptにより、サーバー上で単にレジストリーのキーごとすべて削除したいのですが、
キーがない場合そこでエラーになり終了してしまいます。
キーの有無にかかわらず、キーがある場合のみ削除するにはどのような
スクリプトにしたらよいかアドバイスをください。

スクリプトはこんな感じです。
--------------------------------------------------------------------
Dim WshShell
dim bKey
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegDelete "HKLM\Software\Tivoli\"
WshShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\lcf\"
WshShell.RegDelete "HKLM\System\ControlSet001\Enum\Root\Legacy_lcfd\"
WshShell.RegDelete "HKLM\System\ControlSet001\Enum\Root\Legacy_TECWINADAPTER*\"
WshShell.RegDelete "HKLM\System\ControlSet001\Services\lcfd\"
WshShell.RegDelete "HKLM\System\ControlSet001\Services\lcfd\TECWINADAPTER*\"

WScript.quit
-----------------------------------------------------------------

UNIX Shell はわかるのですが、Windowsに関してはさっぱりわかりません(Object志向のものは苦手なもので・・・)。

もしこれらをUNIX Shell(b,c,k,Shell)でスクリプトを作成する場合、
ひとつひとつif文でファイルの有無を判定し、その結果を標準出力へ出し、その結果、「真」であれば(ファイルがある場合)そのキーを削除する・・・そして、スクリプトの結果を実行ユーザーのホームディレクトリー直下にファイルにして保存・・・というようにするのが一般的ですが、Windowsではどのように記述すればよいかご回答いただければ幸いです。

みなさんもお忙しいと思いますがよろしくお願いします。

A 回答 (3件)

★アイディア


・ちょっとした方法としては、最初に適当な『値』をキーに登録します。
 このときにキーが無ければ『キー』が作成されますよね。
 その状態ならばキーを削除してもエラーがでないと思います。
 この方法。どうでしょうか?
・なお登録する『値』は名前が絶対に衝突しないものにします。
 不安ならばレジストリから登録する『値』の名前を検索して見つからなかったら
 登録するようにします。見つかったら別の適当な名前を登録するようにして下さい。
 これでエラーを回避できると思います。多分。
・以上。
    • good
    • 0
この回答へのお礼

ありがとうございます!
すべて、"RegWrite"で追加すれば全てのキーが存在することに
なりますね!
明日ためしてみます!

お礼日時:2007/07/25 00:53

かなり乱暴な方法ですが、とにかく削除するだけでしたらWshShell.RegDeleteの前に、



On Error Resume Next

を入れてみてはどうでしょうか。

VBSでなくJSでしたらスマートなtry catchが使えます。
    • good
    • 0
この回答へのお礼

ありがとうございます!
”On Error Resume Next”は使えそうです!
あとは、エラー処理でどうやって失敗したキーをファイルに吐かせるかが
ポイントになりそうですが・・・
あっ、キーの書き込み権限がない。。。どうしよう。。。
WSHでは不可能ですかね~・・・

お礼日時:2007/07/24 01:56

これが使えるのかなあ・・・自信が無い



http://security.okwave.jp/qa2469915.html
    • good
    • 0
この回答へのお礼

早速ご回答ありがとうございます!
"If IsNull"でキーの有無をファイルに出力できそうですね!
それができたら"for"文で"WshShell.RegDelete~"をまわせばよいですかね~!? Shellだったら簡単なのですが・・・

お礼日時:2007/07/24 01:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!