AutoHotKey(오토핫키) 설명서 Loop (registry)

Posted by 발전소장
2014. 8. 14. 13:40 AutoHotKey/Commands

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
}