web-dev-qa-db-ja.com

.REGファイルでREG_EXPAND_SZエントリを指定するにはどうすればよいですか?

バッチスクリプトと.regファイルを使用して、いくつかのカスタムサービスを設定しようとしています。ほとんどのキーは適切に設定されていますが、一部のサービスにはDependOnServiceキーを設定する必要があります。これは通常、複数の文字列です。このキーを.regファイルから設定することは可能ですか、それとも手動入力が必要ですか?

9
MBraedley

REG_MULTI_SZファイル内の.regデータは、16進数でエンコードする必要があります。コンテンツが変更されない場合は、データを使用してレジストリにダミーアイテムを作成し、エクスポートして、必要に応じて調整できます。

変更された場合は、Windowsに含まれているregプログラムを使用して追加する方がはるかに簡単です。これを行うには、次の形式でregを呼び出します。

Reg Add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>

セパレータスイッチはオプションです。使用しない場合、書き込む文字列は、ヌル文字(\0)のエスケープシーケンスで区切る必要があります。たとえば、Flairという名前のアイテムをfoobar、およびbazの文字列でHKLM\SOFTWARE\WhizBang\Excite-O-Ramaに追加するには、次のように実行します。

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz

代わりにデータをコンマで区切るには、次のコマンドを実行します。

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,

詳細については、Microsoft Docsの Reg コマンドを参照してください。

13
Patches
  • dword: = DWORD
  • hex(2): = Expandable-文字列
  • hex(7): =マルチストリング

DWORDは32ビットの符号なし整数(10進範囲:0 --4294967295)であり、レジストリでは、DWORDは常に0xで始まり、0xの後に8桁あります。これは、10進数または16進数の形式にすることができます。たとえば、10000x00001000または0x000003e8と書くことができます。

DWORDSは数字0--9のみを使用できます。あらゆる種類の文字列は常にASCIIを使用し、ACSIIでは100031,30,30,30としてのみ記述できます。文字列データ型の場合、コンピュータは1と0しか認識しないため、ASCIIは、知らないうちにバックグラウンドで機能します。

Expandable-StringおよびMulti-Stringデータ型の場合、これらはエントリを一連のASCIIコードとして16進形式で、コンマと16進ゼロで区切って保存します。したがって、1000のExpandable-Stringはbe hex(2):31,00,30,00,30,00,30,00

%PROGRAMFILES%をExpandable-Stringに変換しましょう:

  1. ASCIIから16進数への変換ツール を使用し、テキストボックスに%PROGRAMFILES%を入力し、ユーザー定義の出力区切り文字:%を選択し、[変換]を選択すると次のようになります:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
    
  2. その結果をコピーしてテキストエディタに貼り付けます。最初の%を最後に移動し、すべての%,00,で検索/置換し、文字列の最後にあるカンマを削除します。次のようになります:
    25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
    
  3. 最後に:
    hex(2):25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
    

このレッスンには、暗号化されていない16進コードのレジストリエントリをリバースエンジニアリングするために必要なすべての知識が含まれています。

0
DarkReverser