こんにちは。
お世話になります。

早速ですが、
WSHを使って、レジストリキーを検索し、そのキーの入ってるフォルダごと削除するような
vbsを作りたいのですが、レジストリキーを検索する方法がわかりません。
検索したいレジストリキーの場所は、コンピュータによって変わってしまうので
あるキーワードを元にレジストリ全体を検索し、そのキーのパスを取得したいと考えています。

レジストリの検索方法をご存知の方、やり方を教えていただけないでしょうか。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

WHSでは


レジストリを扱う方法として
RegRead
RegWrite
RegDelete
の3つの機能が用意されています。
値を読み出す為にはRegReadしかありませんが
RegReadは、値名またはキー名をしていして値(キー名の場合は、規定の値)を読み出すことしかできません。
つまり下位のキーを取り出す方法がないので、レジストリをルートからたどるというようなことが(すくなくともWSHだけでは)できません。

キーが判れば丸ごと削除するのは、RegDeleteでできます。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
お礼が遅くなってすみません。

そうですか。WSHで検索のようなことはできないのですね・・・・。
なんとか、vbsのようなそれだけで動くようなアプリケーションで、質問に書いたような
レジストリの検索や削除ができるような方法はないでしょうか?
ご存知でしたらぜひまたお願いします。

お礼日時:2005/04/03 23:26

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qなぜ標準でレジストリ修復がついていないのでしょうか

Windows7 home 64bitを使っています。色々検索した結果、不具合の原因がどうやらレジストリにある可能性が高いということがわかりレジストリの修復をしたいと考えています。

しかしフリーのソフトでは不具合の箇所をチェックすることはできても修復が有料です。
無料でやるにはWindows7のOS再インストールしかないということらしいです。

ここで疑問なのがインストールCDがあるのになぜレジストリだけを修復することができないのかということです。

インストールCDには元の正しいレジストリのデーターがあるはずです。
要はそれと照らし合わせて変更されている部分だけを元に戻せばいいだけだと思うのですが
なぜ有料ソフトでできることを出来ないのでしょうか?

すべてを消去するかバックアップをとってOSを再インストールし、また同じ環境を構築するのは面倒ではないですか?

Aベストアンサー

なぜ標準でついていないかはマイクロソフトに聞かないと分かりませんが、考えられる理由としては、システムに致命的な障害をもたらすレジストリ損傷を防ぐにおいてWindows側が十全の備えをしており、一部のベンダがアドウェアで騒ぎ立てるレジストリエラーはシステム的には問題ではなく、また、レジストリにユーザが書き込んだ異常な設定についてはMSが勝手に書き換えることが正しいと限らない、と言うあたりでしょうか。

無料のレジストリエラー解消ツールを使いたいなら、AVGを入れればよいでしょう。現行版(2014)ではレジストリエラー修復機能が無料で使えます(最初にメルアド登録が必要だったかな?)。AVGの画面を起動して、パフォーマンス修復を選択すると、レジストリエラー修復を含むツール画面が出てきます。

ただ、それでレジストリエラーを解消したところで、問題は解決しないと思いますよ。レジストリに保管されているのはシステムやアプリケーションの設定値で、それを正しく設定しなおしてくれるわけではないので。これら設定値が原因で問題が出る場合は、荒療治で副作用の可能性もありますが、当該レジストリ部分をバッサリ削除してしまうのが手です。削除されますと、その部分に関係するアプリケーションが実行された際に、既定値で自動構成してくれる場合が多いです。

アドウェアは利用者に金を振りこませるのが目的ですから、金を払ってレジストリーエラーを解消すれば万事うまくいくようにイメージさせますが、そんなものではないです。

なぜ標準でついていないかはマイクロソフトに聞かないと分かりませんが、考えられる理由としては、システムに致命的な障害をもたらすレジストリ損傷を防ぐにおいてWindows側が十全の備えをしており、一部のベンダがアドウェアで騒ぎ立てるレジストリエラーはシステム的には問題ではなく、また、レジストリにユーザが書き込んだ異常な設定についてはMSが勝手に書き換えることが正しいと限らない、と言うあたりでしょうか。

無料のレジストリエラー解消ツールを使いたいなら、AVGを入れればよいでしょう。現行版(20...続きを読む

QWSHでのレジストリ登録について

WSHの使い方について質問させてください。
あるキーに値の名前をフルパスで指定させたいのですが、うまくいきません。

完成イメージ
キー:HKCR
値の名前:C:\test\test.exe
値のデータ:1

ソースの一部をこのようにしているのですが、この状態だとCとtestがキーになってしまいます。
strRegKey = "HKCR"
strRegEntry1 = "C:\test\test.exe"
strRegValue1 = "1"
objWshShell.RegWrite strRegKey & strRegEntry1, strRegValue1,"REG_SZ"

どのようにすればうまく登録されるでしょうか?

Aベストアンサー

PRB: Unable to Use a "\" in the Key Name with the RegWrite Method of Windows Script Host
http://support.microsoft.com/kb/281309/en-us

Qレジストリの修復方法

CDが読み込めなくなったため、修理に出したところ、レジストリを修復すればよいと言われましたが、その修復方法がわかりません。
修復手順を教えて下さい。

Aベストアンサー

http://okweb.jp/kotaeru.php3?q=910839

こちら参考にしてください。
Win2000の質問ですが、WinXPも同じです。

Qレジストリキーの検索をする方法を教えてください

例えばレジストリの
「HKEY_LOCAL_MACHINE」→「SYSTEM」→「ABCDEF」→「RSTUVW」→「XYZ」→「MyData」というキーがあったとして、
このMyDataというキーに設定されているいくつかの値を
書き換えたいのですが、その「MyData」というキーが
ここにあるということがわかっていないので、
(ABCDEFやRSTUVWなど途中のキーが場合によって違うため)
「MyData」の場所を検索したいです。
「MyData」は全体を通して1つしかないです。
VB.NET環境です。
良い方法がありましたら教えて頂きたいです。
宜しくお願いいたします。

Aベストアンサー

そのあたり詳しくないので的外れかもしれませんが…。
「よい方法はない」というのが正解のような気がします。

たとえば、RegEditで同様の操作をするとしたら、
トップから「検索」コマンドで操作する形になると思うのですが、
その場合、ものすごく時間かかりますよね?
動きを見ていると総当りしているっぽいです。
標準ツールでそうだということは、プログラムで行う場合も
やっぱり順番に総当りで全て当たるしかないのではないかと…。

工夫する余地があるとすれば、検索のスタート地点を極力深く取るとか、
「このキー以下にはMydataはない」事がわかる場合はそれ以下を
スキップするようにするとか、ツリー構造を利用して極力いらないものを見ないということくらいしか出来ない気がします。

Qレジストリを修復したら...

こんにちは。中3女子です。

昨日、無料のPCレジストリ修復ツールを使い
エラーを修復しました。

ですが、X-アプリという
ウォークマン専用アプリを起動させたところ、
「システムの変更により楽曲ファイルを開けなくなりました」
と表示され、起動できなくなってしまったのです。

どうやらレジストリを修復したことにより、
一部のアプリが起動できなくなったみたいです。

私が個別に使用しているPCはオフラインのため、
ネットを介して何かすることはできません。

システムの復元もやってみたのですが無理でした。

どうしたら復旧できますか?

Aベストアンサー

No3です。

> RegClean Proというソフトを使いました。

うわ、最悪…やられてますよ、それ。そのソフトの評価リンクを貼っておきます。

http://www.geocities.co.jp/Playtown-Yoyo/6130/notes/regclean-pro.htm

そのソフトを入れる前の状態に復元できれば立ち直れるんですが、そうじゃなければお手上げです。x-アプリ以外にも悪影響が及んでいる恐れも強いので、他のソフトを使ってみて問題ないか確かめた方がいいでしょう。場合によっては、リカバリーした方が早いかも知れませんね。

QWSH VBScript レジストリのアクセス権

WSHを使用してVBScriptでレジストリのアクセス権を読み込むことは可能でしょうか?

http://oshiete1.goo.ne.jp/qa2161434.html

上記URLの質問から、APIを使用すれば可能なようですが、VBScriptでAPIを使用するのは難しい(適さない)とのことで自分で調べていてもなかなか良い情報にめぐり会えません。

ご存知の方がいらっしゃいましたらご教授お願いします。

Aベストアンサー

目的に合うかわかりませんが、WSH + WMIでチェックするサンプルがあります。

レジストリ キーに対するアクセス権のチェック
http://www.microsoft.com/japan/technet/scriptcenter/scripts/os/registry/osrgvb08.mspx

整形しないと動きません。(^^;

Qレジストリ修復のフリーソフト

レジストリの修復を完全に無料で出来るソフトはありませんか?  スキャンは無料でも、修復は有料と言うモノしか見当たりません。 何か良いソフトや方法があれば、是非ご教授下さい。Windows7です。

Aベストアンサー

いちばん安全かつ確実な方法は、OSを再セットアップしてしまうことです。
設定も何もかもが初期化されるかわりに、OS上に抱えていた潜在的な不具合やゴミも一掃されてクリーンになります。

Windows7に関しては、ワケのわからないレジストリクリーナを実行したせいで必要なエントリーまで削除されて修復不能に陥った人の相談が、ここのサイトではけっこう見受けられます。
実行するもなにもユーザーの自由ですから『使うべきではない』とまでは申しませんが、レジストリの修復が必要な状況、それもツールの助けを必要とするほどの重篤なレベルはもはや“終わっています”。
ダメモトで使ってみるのも方法のひとつですが、使った後で起動不能になってもいいように、OSが起動できているいまのうちにCドライブ上の必要なデータをすべて救出しておくべきだと思います。

QWSHで、レジストリを一気に消去したい

VBスクリプトにて、WSHプログラミングを行っております。

レジストリを消去する場合、例えば

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegDelete ("消したいレジストリ")

とプロプラミングするかと思いますが、
レジストリ1個ずつではなく、とあるフォルダ以下に含まれる、
全てのフォルダ及びレジストリを一気に消去したいと考えています。

(例えば、
"HKLN\SYSTEM\CurrentControlSet\Control\Class"の
フォルダ以下に含まれる、フォルダ及びレジストリを
全て消去したい)

このようなことを実現するには、VBSでどのようなコードを
書けばよいのでしょうか。ご教授よろしくお願いします。

Aベストアンサー

RegDelete で
key名が\ で終わるような指定をするとキー丸ごと削除できます。
なので
"HKLN\SYSTEM\CurrentControlSet\Control\Class\"
で削除した後、
"HKLN\SYSTEM\CurrentControlSet\Control\Class\"
を作ればいいように思います。
しかし、大丈夫なんですか?
私は、実際に試してみたわけでないので、知りませんけど・・
自己責任で・・

Qレジストリの修復ってどのくらい意味があるんですか?

 最近、Registry Winner かな?

アルソフトをダウンロードしたら、時々何百個のレジストリを

修復する必要がありますと警告してきます。

値段つきでどうやら有料ソフトでした、、、(^^;

 気持ちは分かりますが、いままでPCを10年以上いじってきて

レジストリが壊れてトラぶったことはないように思うのですが??

何百個も修復しないといけないなんてそんなバカな!

 そもそもHDが物理的に壊れて入れ替えたのが3週間前。

そんなに修復の必要があるのかいな?

と思ってしまいます。

 アンインストールして無視するか!数千円払って買うか!フリーソフトで

探すか迷ってますが、そもそもそんなに重要なことなのでしょうか?

Aベストアンサー

レジストリ修復と言えば修復なのですが・・・正確にはレジストリのゴミ掃除ですね。
ソフトによってはアンインストールしてもレジストリを綺麗に削除しない物も多いですからね。

基本的にパソコンの調子が悪くならなければ、レジストリのゴミ掃除はする必要ありません。
ましてや・・・お金を払う価値はありません。

レジストリのゴミ掃除でしたら、フリーソフトのCCleanerが定番ですので・・・このソフトを使われたら良いと思います。

参考URL:http://freesoft-100.com/pasokon/ccleaner.html

Qwshで他の複数のwshを一度に起動したい

WSHから他のWSH(例えばtest1.vbs、test2.vbs、test3.vbs)を順に起動していく処理だと、下記(プログラム1)の通りで上手く行くのですが、一度に並行してキックさせたい場合は、どのようにしたら良いでしょうか?

----------プログラム1(start)---------------
Const ForReading = 1
Dim FileShell
Set FileShell = WScript.CreateObject("Scripting.FileSystemObject")

Function ReadFile(ByVal FileName)
ReadFile = FileShell.OpenTextFile(FileName, ForReading, False).ReadAll()
End Function


Execute ReadFile("test1.vbs")
Execute ReadFile("test2.vbs")
Execute ReadFile("test3.vbs")
----------プログラム1(end)---------------

WSHから他のWSH(例えばtest1.vbs、test2.vbs、test3.vbs)を順に起動していく処理だと、下記(プログラム1)の通りで上手く行くのですが、一度に並行してキックさせたい場合は、どのようにしたら良いでしょうか?

----------プログラム1(start)---------------
Const ForReading = 1
Dim FileShell
Set FileShell = WScript.CreateObject("Scripting.FileSystemObject")

Function ReadFile(ByVal FileName)
ReadFile = FileShell.OpenTextFile(FileName, ForReading, False).ReadAll()
End Function...続きを読む

Aベストアンサー

スクリプトファイルを読み込むのではなく、
VBSファイルを個別にシェル実行すればいいのでは?
WshShell.Run("wscript.exe ????.vbs")
というかんじで。


人気Q&Aランキング