• 締切済み

レジストリHKEY_USERSのSID以下の編集

複数のクライアントにて、レジストリの「HKEY_USERS\(SID)\」以下のある値を編集する実行ファイルを作成したいと考えています。 しかし、「(SID)」の部分が端末毎に異なっているため、レジストリエディタより、regファイルを作成しても、他の端末では正しく実行できません。 端末毎に適切な「(SID)」を用いて、レジストリ登録をするにはどのようにすればよいのでしょうか? 宜しくお願いします。

みんなの回答

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

各端末のレジストリから、SIDごとに".reg"ファイルを書き出す方法です。(XP上で検証しています。2000の場合には、"reg"コマンドが標準ではインストールされていないので、サポートツールをインストールする必要があります。) 下記(====と====の間、====行は含まない)をテキストエディタにコピー&ペーストして、sid.cmdの名前を付けて保存し、各端末上で実行すると、指定したフォルダに"S-1-"で始まる".reg"ファイルが作成されます。 ==================この下から================== set fldr=○○○○○○○○ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s | find "S-1" > %fldr%\sid.lst for /f "delims=" %%s in ('type %fldr%\sid.lst') do ( set sid=%%s reg export "HKU\%sid:~76%\○○○○○○○○" %fldr%\%sid:~76%.reg ) del %fldr%\sid.lst ==================この上まで================== 以下、各行の実行コマンドの解説です。 1行目: 変数"fldr"に".reg"ファイルを書き出すフォルダ名をセットします。○○○○○○○の部分に、".reg"ファイルを書き出したいフォルダを指定してください。 例:set fldr=C:\WINDOWS\Temp 例:set fldr="C:\Documents and Settings\Administrator"  (←フォルダ名に半角スペースが含まれているので、二重引用符で括る) 2行目: "reg"コマンドの"query"+"/s"オプションで、"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"キー以下のサブキーと値を出力し、その後の"find"コマンドで、SIDを意味する"S-1"で始まるキーだけを"sid.lst"ファイルに出力します。 3行目~6行目: "sid.lst"ファイルに出力されたSIDの数だけ4~5行目を繰り返します。 4行目: "sid.lst"ファイル内のSIDを1つ目から順に変数SIDにセットします。 5行目: "reg"コマンドの"export"オプションで、"HKU\%sid:~76%\○○○○○○○○"キー以下を、1行目で指定したフォルダの"S-1-......reg"ファイルに出力します。○○○○○○○○の部分に書き出したいキー名を指定してください。 例:"HKU\%sid:~76%\Environment"で、"HKEY_USERS\S-1-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxx\Environment"キーの内容が書き出されます。(このキーはユーザー環境変数の設定を保持しているキーです。) 7行目: "sid.lst"は一時的に使用するだけなので、最後に削除しています。 なお、直接レジストリを変更したいのでしたら、5行目の"reg"コマンドの"query"オプションを"add"オプションや"delete"オプションに変更し、必要なパラメータを指定します。複数のキーや値を変更したい場合には、5行目と6行目の")"の間に同様に記述します。 "reg"コマンドの使い方は、 reg /? reg query /? reg add /? reg delete /? 等で確認してください。

関連するQ&A

  • ログオンスクリプトでレジストリ読み込みできない

    クライアントPCのログオンスクリプトに、以下の.regを読み込むよう記述しました。 ログオンスクリプトはサーバ内にあります。 クライアントをログオンしても、なぜか「HKEY_CLASSES_ROOT」の値を変更してくれません。 「CURRENT_USER」等は.regを読み込んで変更してくれます。 当該行の前後にpauseを入れたり、「CURRENT_USER」配下を変更する.regを配置した場合、 それらは正常に読み込まれるので、スクリプトを通過(動作してる)ことは確かです。 また、ログオン後、.regファイルをクライアントPC上で実行すると 値は変更されます。 「HKEY_CLASSES_ROOT」はログオンスクリプトでは変更できないのでしょうか。 また、正しい記述をご存知であれば、ご教示いただけますでしょうか。 よろしくお願いいたします。 ------------------ MIMEのmp3の関連付けを変更するレジストリです (ログオンスクリプト) REGEDIT /S .regファイルまでのパス (作成した.reg) Windows Registory Editor..... [HKEY_CLASSES_ROOT\MIME\Database\Content Type\audio/mp3] "CLSID"="{文字たくさん}"

  • レジストリ

    ファイル名を指定して実行→regedit→OKで レジストリエディタが開いてきます。 HKEY_CURRENT_CONFIGのをクリックすると ProfileFlags REG_BINARY 00 00 00 00と出ています。 これは修正するか削除した方が良いのでしょうか?

  • 間違った表記のレジストリをインポートした

    間違った表記のレジストリをインポートした 表題のとおり、レジストリファイル(.reg)を作成してインポートしたのですが、本来 [HKEY_CURRENT_USER\Software\… とするところ、 [HKEY_CURENT_USER\Software\… などと、間違えて表記したことに気づきました。 インポート(ダブルクリック)したところ、追加されました、との表示が出たのですが、 レジストリエディタで色々と探したのですが、反映されてないようなのですが、 どこかに追加されてしまった、ということはないでしょうか?? システムの根幹なので、ちょっと心配です。ご存知の方いらっしゃれば、ぜひ 教えて下さい。もし追加された可能性があるとしたら、場所も教えて頂けると 削除できるので、何卒お願いいたします。

  • レジストリ編集についての質問

    お世話になります。 早速ですが "Version"="3.75" これを レジの [HKEY_CURRENT_USER\****\**] に追加したいのですがいまいちわかりません 教えていただけたら助かります。 レジストリエディタで[HKEY_CURRENT_USER\****\**]このフォルダの中にファイル名が(既定)というのがあります。 この画面で右クリックし、新規→このあとどれを選んでいいのかわかりません。 よろしくお願いします

  • レジストリについて…

    『次のレジストリ・キーを選択します。 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2 右側ペイン内で、次の値を削除します。 "2001" = "0x00000000" "2004" = "0x00000000"』 と有るのですが "2001" = "0x00000000" "2004" = "0x00000000"は レジストリエディタにて 名前2001  種類REG_DWORD データ0x00000000 名前2004 種類REG_DWORD データ0x00000000 これのことを指しているのでしょうか? よろしくお願いします。 

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

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

  • HKEY_DYN_DATA

    こんにちは。私はあるサイトでレジストリについて勉強しています。そのサイトで以下のような記述がありました。 ******************** レジストリエディタの左側ウインドウには6つのメインキーが表示されています。これをみても解るように、レジストリはまずは6つのメインキーで構成されています。  HKEY_CLASSES_ROOT  HKEY_CURRENT_USER  HKEY_LOCAL_MACHINE  HKEY_USERS  HKEY_CURRENT_CONFIG  HKEY_DYN_DATA ******************** しかし、レジストリエディタを起動してみるとHKEY_DYN_DATA がありません。これで異常はないのでしょうか?どなたか教えてください。OSはWindows XPです。

  • レジストリのキーを削除

    レジストリのキーを削除するためのREGファイルの記述方法を教えてもらえないでしょうか? レジストリの書き出しを行うと、REGファイルが作成されて、それを実行すると書き出した内容が追加されます。 でも、キーを削除するための記述がわかりません。 レジストリエディタで削除すればいい、と言わずに教えてください。(^^;

  • SID(CID?)について教えてください

    レジストリに以下のキーがあります。 HKEY_USERS\S-1-1-11-1111111111-111111111-1111111111-111\Software\Microsoft\... キーの「S-1-...」から始まる数字の羅列ですが、 これはSIDというのでしょうか、CIDというのでしょうか。 またこの数字ですが、PCの固定値してひとつだけ作成されるものなのでしょうか、 もしくは、作成したアカウントの分だけPC内に作成されるものなのでしょうか。

  • 信頼済みサイトの追加(レジストリ)教えてください

    レジストリ機能を使って信頼済みサイトを追加したいのですが、先日 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range*] "http"=dword:00000002 ":Range"="192.168.1.101" 上記の.regファイルを使って信頼済みサイトを追加しました。 本日上記のregファイルのアドレス部分だけをいじって [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range*] "http"=dword:00000002 ":Range"="192.168.5.101" で実行すると192.168.5.101は登録されたのですが、192.168.1.101が消えてしまいました。 レジストリエディタの画面でツリーを開いていったのですが、range*フォルダの中身が192.168.1.101か ら192.168.5.101に書き変わってたのが原因というのはわかったのですが、 2つのアドレスを信頼済みサイトに登録したい場合はどうすればいいのでしょうか? Ranges\Range*の*の部分を適当な文字列に変えたらいいのでしょうか? [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range*] "http"=dword:00000002 ":Range"="192.168.1.101" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range-] "http"=dword:00000002 ":Range"="192.168.5.101" これで実行すれば2つ登録されたのですが、これであっているかわからないので・・・・・