Loop (registry)

指定キー以下のレジストリキーそれぞれに対して繰り返し処理を行う

Loop, RootKey [, Key, IncludeSubkeys?, Recurse?]

Parameters

引数名説明
RootKey 「HKEY_LOCAL_MACHINE」「HKEY_USERS」「HKEY_CURRENT_USER」「HKEY_CLASSES_ROOT」「HKEY_CURRENT_CONFIG」のどれか。「HKLM」のような短縮名も可能。
リモートのレジストリにアクセスしたい場合、「\\workstation01:HKEY_LOCAL_MACHINE」のようにコンピュータ名と「:」をつける。
Key 親キー名。
例えば「Software\SomeApplication」。
省略時はRootKey以下のキーが処理される。
IncludeSubkeys? 「0」なら、値のみを処理。
「1」なら、値とサブキー。
「2」なら、サブキーのみ。
デフォルトは「0」。
Recurse? 「0」なら、サブキー内のキーは対象にならない。
「1」なら、サブキー内のキーも対象になる。
デフォルトは「0」。

Remarks

対象となっているキーの情報は、下記の変数として参照できる。

A_LoopRegName 対象となっている値やサブキーの名前。
RegEdit.exeで「(規定)」となっている値の場合、空になる。
A_LoopRegType サブキーの場合「KEY」となる。
値の場合、「REG_SZ」「REG_EXPAND_SZ」「REG_MULTI_SZ」「REG_DWORD」「REG_QWORD」「REG_BINARY」「REG_LINK」「REG_RESOURCE_LIST」「REG_FULL_RESOURCE_DESCRIPTOR」「REG_RESOURCE_REQUIREMENTS_LIST」「REG_DWORD_BIG_ENDIAN」のどれかになる。
これらのどれでも無いタイプのキーだった場合、空になる。
A_LoopRegKey 対象となっているルートキーの名前。(「HKEY_LOCAL_MACHINE」「HKEY_USERS」「HKEY_CURRENT_USER」「HKEY_CLASSES_ROOT」「HKEY_CURRENT_CONFIG」). リモートのレジストリでも、コンピュータ名は含まない。
A_LoopRegSubKey 対象となっている項目のサブキーのパス。
A_LoopRegTimeModified キーの最終更新日時。YYYYMMDDHH24MISS形式。
NT系で、対象がサブキーの場合以外は空。

下記のコマンドをレジストリループ内で実行する場合、対象キーを省略できる。

RegRead, OutputVar 現在の項目の値を変数に読み出す。
項目がサブキーだった場合、ErrorLevelが「1」になり、OutputVarは空になる。
RegWrite [, Value] 現在の項目に値を書き込む。
Valueが省略された場合、値は「0」もしくは空になる。
項目がサブキーだった場合、ErrorLevelが「1」になる。
RegDelete 項目を削除する。
項目がサブキーだった場合、以下の全ての項目が削除される。

その他の仕様は、通常のLoopと同様。

リモートマシンのレジストリの扱いに関する説明は割愛する。

Related

Loop, Break, Continue, Blocks, RegRead, RegWrite, RegDelete

Example(s)

Loop, HKEY_CURRENT_USER, Software\Microsoft\Windows, 1, 1
{
	if a_LoopRegType = key
		value =
	else
	{
		RegRead, value
		if ErrorLevel <> 0
			value = *error*
	}
	MsgBox, 4, , %a_LoopRegName% = %value% (%a_LoopRegType%)`n`nContinue?
	IfMsgBox, NO, break
}