- 締切済み
VBSでレジストリーの削除方法
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ではどのように記述すればよいかご回答いただければ幸いです。 みなさんもお忙しいと思いますがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アイディア ・ちょっとした方法としては、最初に適当な『値』をキーに登録します。 このときにキーが無ければ『キー』が作成されますよね。 その状態ならばキーを削除してもエラーがでないと思います。 この方法。どうでしょうか? ・なお登録する『値』は名前が絶対に衝突しないものにします。 不安ならばレジストリから登録する『値』の名前を検索して見つからなかったら 登録するようにします。見つかったら別の適当な名前を登録するようにして下さい。 これでエラーを回避できると思います。多分。 ・以上。
- SHIMAPEE
- ベストアンサー率75% (154/203)
かなり乱暴な方法ですが、とにかく削除するだけでしたらWshShell.RegDeleteの前に、 On Error Resume Next を入れてみてはどうでしょうか。 VBSでなくJSでしたらスマートなtry catchが使えます。
お礼
ありがとうございます! ”On Error Resume Next”は使えそうです! あとは、エラー処理でどうやって失敗したキーをファイルに吐かせるかが ポイントになりそうですが・・・ あっ、キーの書き込み権限がない。。。どうしよう。。。 WSHでは不可能ですかね~・・・
- himajin100000
- ベストアンサー率54% (1660/3060)
これが使えるのかなあ・・・自信が無い http://security.okwave.jp/qa2469915.html
お礼
早速ご回答ありがとうございます! "If IsNull"でキーの有無をファイルに出力できそうですね! それができたら"for"文で"WshShell.RegDelete~"をまわせばよいですかね~!? Shellだったら簡単なのですが・・・
お礼
ありがとうございます! すべて、"RegWrite"で追加すれば全てのキーが存在することに なりますね! 明日ためしてみます!