• ベストアンサー

指定レジストリキーのサブキーの取得方法

VBScriptで指定したレジストリキーのサブキーの一覧を取得する方法は ありますでしょうか。 VBScriptだけでは難しいという場合、CやC++でサブキーを取得するEXEを 作成し、VBScript内で実行するという方法でも構いません。 どうにかレジストリのサブキーを取得できる方法をご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

WSH VBScript + WMI の環境でよろしければサブキーの列挙(EnumKey)ができます。下記にMSのサンプルがあります。WindowsXP Pro SP2で試しました。 TechNet ホーム > スクリプト センター > スクリプト一覧 > オペレーティング システム > レジストリ サブキーの列挙 http://www.microsoft.com/japan/technet/scriptcenter/scripts/os/registry/osrgvb10.mspx サンプル4行目の&の後ろに _ を付けて継続し、EnumKey.vbsなどの名前を付けて保存します。サンプルではStdOutに出力していますので、コマンドプロンプトから >CScript EnumKey.vbs などで実行しますとサブキーが表示されます。

mkmarimo
質問者

お礼

ご回答ありがとうございます。 ご返事が遅くなり申し訳ありません。 お教えいただいた方法えうまくいきました。 助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

Scriptだけだと ・RegWrite ・RegDelete ・RegRead しかないので、無理だと思います。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsMthRegWrite.asp >VBScriptだけでは難しいという場合、CやC++でサブキーを取得するEXEを作成し 普通のEXEを利用してもよいのであれば API:[RegEnumKeyEx] を利用したらよいです。 一応Cのスレ http://okwave.jp/qa1439660.html でもVBのスレの方が、充実してたりして^^; VB6の履歴 http://okwave.jp/qa1253134.htm 以前、そのVB6の履歴を.NETにコンバートをしました^^ http://okwave.jp/qa1733337.htmll

mkmarimo
質問者

お礼

ご回答ありがとうございます。 ご返事が遅くなり申し訳ありません。 お教えいただいた方法でうまくいきました。 助かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 見えないレジストリキーの発見法

    C:\WINDOWS\regedit.exe や C:\WINDOWS\system32\regedt32.exe を実行しても見えないレジストリキーってあるんですね? HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run  や HKCU\Software\Microsoft\Windows\CurrentVersion\Run 等のスタートアップにその見えないキーがあったら不安で怪しいですよね? どうやったら隠れたレジストリを全て見えるようにできますか? http://download.sysinternals.com/Files/RegHide.zip のRegHideというツールが通常のレジストリエディタでは見えないキーの作成ができるそうですので。

  • HKEY_USERS下のキーを取得したい

    VBScriptでレジストリ情報から「HKEY_USERS」配下にあるユーザー?の一覧を取得できないかと試行錯誤しています。 あるサイトを参考に「HKEY_CURRENT_USER\SOFTWARE\」配下などのキー一覧は取得できたのですが、レジストリエディタで表示される5つの大項目キー配下を取得することができません。 どなたかご教授していただけると助かります。

  • バッチファイルでレジストリキーを読み出すには?

    バッチファイルから、レジストリキーを読み出す方法を探しています。 やりたいことは、あるソフトウェアのインストール後に、一部のファイルのみをバッチファイルで置き換えたいのです。ソフトのインストーラは既存のものなので、変更できません。ソフトが何処にインストールされるかはユーザ次第です。 このソフトをインストールすると、レジストリにインストールフォルダのパスが格納されるので、これを取得して、ファイルのパスを割り出すことを考えています。 バッチファイルから指定のレジストリキーを読み出す方法をご存知の方はご教授ください。

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

    お世話になっております。 VB.NET環境なのですが、 http://oshiete1.goo.ne.jp/qa2556273.html で質問をさせて頂き、レジストリキーの検索について教えて 頂いたのですが、全部検索するとしても 具体的にはどのようにして検索したら良いでしょうか。 キーの名前や存在がわからない状態からの検索なので、 番号などで指定して重複したFor Nextを使ったりするのでしょうか? キーの数を取得したり、番号からキー名を取得する関数があるのでしょうか? 具体的な方法を簡単にご教示頂ければありがたいです。 宜しくお願いいたします。 OSはWindowsXP環境です。

  • 不明なレジストリキーの削除方法

     初めまして。  パソコンに関してはまだまだ初心者に毛が生えた程度のものですが、調子に乗ってレジストリのことを勉強していて、不要なレジストリキーは削除してもよいことを知り、色々見ていた中で、「HKEY_LOCAL_MACHINE\HKEY_LOCAL_MACHINE\SOFTWARE\株式会社」というキーが出てきました。 このキーにアクセスしようとしても「株式会社 を開けません。キーを開こうとしてエラーが発生しました。」とメッセージがでてアクセスできません。  こんな名前のソフトをインストール及び削除をした記憶は有りません。  残しておいても大丈夫とは思いますが、何か気持ち悪くてどなたか対処方法をご教授ください。  よろしくお願いいたします。

  • レジストリキーの削除

    「****movie.exe」というMacromedia Flash Player 7.0用のファイルをダウンロードしてある会社が作成した動画を見ました。 その後削除しようと思い、「ディスクX」の「アプリケーションの削除」でこのファイルを指定してみたら、レジストリのキーも2つ削除の候補に出てきました。こんなのです。 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\exe 動画ファイルを配布している会社に動画ファイルの削除の仕方を聞くと、「****movie.exe」を削除するだけでよいという回答でした。 フラッシュプレーヤー用の動画ファイルはレジストリのキーに何も変更を加えていないのでしょうか。

  • dllの取得

    VB2005を使用しています。実行中のシステムで使用しているDLLは Assembly.GetReferencedAssembliesを使用して取得できたのですが、 処理を行う過程で、別のシステム(例:Sample.exe)で実行に必要なDLLを取得する方法がわかりません。 どなたかわかる方がいらっしゃれば是非ご教授ください。 ちなみに、Sample.exeは起動していません。 必要であればProcess.Start()等で一時的に起動しても構いません。 非表示で起動してしまえばいいので… ↓雰囲気的にはこんな感じです。 '指定された実行可能ファイルに必要なDLL一覧を取得 Dim sDllFiles() AS String = XXX.XXXX("C:\Test\Sample.exe")

  • 指定したKEYの内容を取得する方法2

    どなたかご存じの方ご回答よろしくお願いします。 【質問】  A列をKEYとして、B列~AF列まで数字が入っているエクセルシート(テーブル)があります。  別のエクセルシート(取得)からA列に存在するKEYをKEY1~KEY15として計算結果から  でた値(変数)から、エクセルシート(テーブル)のB列~AF列までの値を取得する方法が   知りたいです。 ※KEYを直接入力して値を取得する方法は前回の質問(指定したKEYの内容を取得する    方法)で回答を得ました。 【エクセルシート(テーブル)】 A BCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAF                  : 12 1 0 4 1 0 1 0 0 2 0 2 0 1 1 0 2 1 1 1 3 1 1 3 3 3 0 1 4 0 2 2 13 0 0 3 0 1 0 0 1 1 2 1 1 2 1 1 1 2 0 0 1 1 1 1 1 1 1 0 1 0 1 3 14 2 0 1 1 3 0 2 1 2 1 2 0 0 1 2 2 1 3 2 1 1 0 3 2 0 3 2 2 1 2 0                  : 137 1 1 1 2 4 1 2 2 2 3 1 2 0 2 2 0 3 2 4 4 0 2 4 2 0 3 2 2 2 3 1 138 2 1 1 1 0 0 1 2 1 1 2 1 2 2 1 2 1 2 1 1 3 1 3 2 1 3 5 1 1 1 2 139 0 2 3 3 2 2 1 1 1 0 1 2 2 0 1 0 2 2 1 3 2 2 1 2 1 5 2 2 4 0 1 : 【エクセルシート(取得)】   A   B CD E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG  KEY1  13 0 0 3 0 1 0 0 1 1 2 1 1 2 1 1 1 2 0 0 1 1 1 1 1 1 1 0 1 0 1 3  KEY2 138 2 1 1 1 0 0 1 2 1 1 2 1 2 2 1 2 1 2 1 1 3 1 3 2 1 3 5 1 1 1 2                   :   :                    :  KEY15 12 1 0 4 1 0 1 0 0 2 0 2 0 1 1 0 2 1 1 1 3 1 1 3 3 3 0 1 4 0 2 2 【注意事項】   ・エクセルシート(テーブル)のA列のKEYは重複無しで昇順に並んでいます。   ・エクセルシート(取得)に入力するKEYは15個あります。B列のKEY1~KEY15は     直接B列に値を入力するのではなく、エクセルシート(取得)の中で計算されて得られた値     です(例:KEY1のBの値は13になっていますが、このセルには「=AY+AZ」という計算式が     入っておりその計算結果です。)。計算結果が変わるたび、エクセルシート(テーブル)の     A列を探してHITしたKEYのB列~AF列の内容をエクセルシート(取得)のC列以降に     取得します。   ・使用するエクセルは2010です。    以上、よろしくお願いします。 

  • 怪しいレジストリキー "HKEY_LOCAL_MACHINE\SOFT

    怪しいレジストリキー "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ ` '>m* " Windows XP HOME SP3を使用しています。 最近、別の用事でレジストリエディタを開いたら、上記のレジストリキーを見つけました。 普通レジストリのキーの名称などはソフトウェアの名前などもっともらしいものですが、 " ` '>m* " というのはとても何かまっとうなソフトウェアが使っているレジストリとは思えません。 ちなみにこのキーの下には 369f7183282ffae1    REG_QWORD という値がありますが、これも何のことだかわかりません。 Google等で調べてみましたが適切な情報は得られませんでした。 そこで以下の点についてどなたか詳しい方にご教授いただければ幸いです。 (質問1) これは何のソフトウェアが何の目的で使うものなのでしょうか。 (質問2) このまま放っておいていいものでしょうか、それとも削除したほうがいいのでしょうか。逆に削除することにリスクはありますでしょうか。 どうぞよろしくお願いいたします。

  • SIDの取得について

    今回、現在ログインしているユーザのレジストリを変更したく VBSを作成したのですが、ユーザがレジストリ変更の権限のないユーザである為 管理者(RUNASを使用)として実行する仕組みにより実現しようとしております。 ここで、カレントユーザのレジストリを変更する際に「管理者」として処理しているため 管理者のレジストリキーが変更されてしまい、既存のユーザのレジストリが変更されない状態です。 そこで、HLEY_USERのSIDからログインしているユーザのレジストリを 変更したいと思っているのですが(やりたいことと同義かどうかも不明ですが) SIDを取得して当SIDのレジストリキーを変更するVBSについてソースなど アドバイスをいただけないでしょうか。 質問ばかりになりますが、どうか宜しくお願い致します。