Loop (레지스트리)

지정된 레지스트리 서브키의 내용을 한 번에 하나씩 열람합니다.

New Syntax [v1.1.21+]

Loop, Reg, KeyName , Mode

매개변수

Reg

문자 그대로의 단어 Reg (대소문자 구분). 변수나 표현식 불가능.

KeyName

The full name of the registry key such as HKLM\Software or %FullPathOfKey%.

This must start with HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, or HKEY_CURRENT_CONFIG (or the abbreviations for each of these, such as HKLM). 원격 레지스트리에 접근하려면, 컴퓨터 이름과 쌍점을 앞에 배치하십시오. 다음 예제와 같이: \\workstation01:HKEY_LOCAL_MACHINE

Mode

If blank or omitted, only values are included and subkeys are not recursed into. Otherwise, specify one or more of the following letters:

Old Syntax

비추천: 이 구문는 새 스크립트에 사용을 추천하지 않습니다. Use the new syntax instead.

Loop, RootKey , Key, IncludeSubkeys?, Recurse?

매개변수

RootKey

HKEY_LOCAL_MACHINE (HKLM), HKEY_USERS (HKU), HKEY_CURRENT_USER (HKCU), HKEY_CLASSES_ROOT (HKCR), 또는 HKEY_CURRENT_CONFIG (HKCC) 중 하나가 되어야 합니다.

원격 레지스트리에 접근하려면, 컴퓨터 이름과 쌍점을 앞에 배치하십시오. 다음 예제와 같이: \\workstation01:HKEY_LOCAL_MACHINE

Key

키의 이름 (예, Software\SomeApplication). 비어 있거나 생략하면, RootKey의 내용이 열람됩니다.

IncludeSubkeys?

If blank or omitted, it defaults to 0 (only values are retrieved). 그렇지 않으면, 다음 숫자 중 하나를 지정하십시오:

Recurse?

비어 있거나 생략하면, 기본값은 0 (하위키에 재귀하지 않습니다)입니다. 그렇지 않으면, 다음 숫자 중 하나를 지정하십시오:

논평

레지스트리-회돌이는 레지스트리 값 또는 하위키의 집단을 한 번에 하나씩 처리하고 싶을 때 유용합니다. 값과 하위키는 역순으로 (아래에서 위로) 열람되므로 회돌이를 방해하지 않고 회돌이 안에 RegDelete를 사용할 수 있습니다.

다음 변수들이 레지스트리-회돌이 안에 존재합니다. 내부 레지스트리-회돌이가 외부 레지스트리-회돌이 안에 싸여 있다면, 내부 회돌이의 레지스트리 항목이 우선 순위를 갖습니다:

변수 설명
A_LoopRegName 현재 열람된 항목의 이름. 값 이름 또는 하위키의 이름 중 하나입니다. 값 이름에 값이 할당되어 있으면 Windows RegEdit이 "(Default)"로 보여주는 값 이름이 열람됩니다. 그러나 A_LoopRegName는 값 이름에 대하여 비워집니다.
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 Name of the current subkey. 이 키는 Key 매개변수와 같습니다. 단, Recurse 매개변수가 재귀적으로 다른 하위키들을 탐험하는 데 사용중이면 예외입니다. 그런 경우라면, 현재 열람된 항목의 전체 경로입니다. 루트 키를 포함하지 않습니다. 예를 들어: Software\SomeApplication\My SubKey
A_LoopRegTimeModified 현재 하위키 또는 그의 값이 마지막으로 변경된 시간. 형식은 YYYYMMDDHH24MISS. 이 변수는 현재 열람된 항목이 하위키가 아니면 비어 있습니다 (즉, A_LoopRegType는 단어 KEY가 아닙니다).

레지스트리-회돌이 안에서 사용될 때, 다음 명령어들을 사용하면 현재 열람된 항목을 처리해야 할지 말지 간단하게 알려줄 수 있습니다:

구문 설명
RegRead, OutputVar 현재 항목을 읽습니다. 현재 항목이 키이면, ErrorLevel에 1이 설정되고 OutputVar는 비워집니다.
RegWrite, Value
RegWrite
현재 항목을 씁니다. Value를 생략하면, 항목은 그의 유형에 따라 0이 되거나 비워집니다. 현재 항목이 키이면, ErrorLevel은 1이 설정되고 다른 효과는 전혀 없습니다.
RegDelete 현재 항목을 삭제합니다. 현재 항목이 키이면, 그의 서브키 그리고 그 안에 포함된 값까지 함께 삭제됩니다.

When accessing a remote registry (via the RootKey or KeyName parameter described above), the following notes apply:

Blocks, Break, Continue, 그리고 A_Index 변수 (모든 유형의 회돌이에 존재함)에 관한 정보는 Loop를 참조하십시오.

Loop, Break, Continue, 블록, RegRead, RegWrite, RegDelete, SetRegView

예제

사용자가 타자한 인터넷 익스플로러의 URL 이력을 삭제합니다.

Loop, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\TypedURLs
    RegDelete

작동하는 테스트 스크립트.

Loop, Reg, HKEY_CURRENT_USER\Software\Microsoft\Windows, KVR
{
    if (A_LoopRegType = "key")
        value := ""
    else
    {
        RegRead, value
        if ErrorLevel
            value := "*error*"
    }
    MsgBox, 4, , %A_LoopRegName% = %value% (%A_LoopRegType%)`n`nContinue?
    IfMsgBox, NO, break
}

전체 레지스트리에서 특정 값을 재귀적으로 열람하는.

SetBatchLines -1  ; 최대 속도로 검색합니다.
RegSearchTarget := "Notepad"  ; 서브루틴에 무엇을 검색하고 싶은지 알립니다.
Gosub, RegSearch
return

RegSearch:
ContinueRegSearch := true
Loop, Reg, HKEY_LOCAL_MACHINE, KVR
{
    Gosub, CheckThisRegItem
    if not ContinueRegSearch ; 멈추어야 합니다.
        return
}
Loop, Reg, HKEY_USERS, KVR
{
    Gosub, CheckThisRegItem
    if not ContinueRegSearch ; 멈추어야 합니다.
        return
}
Loop, Reg, HKEY_CURRENT_CONFIG, KVR
{
    Gosub, CheckThisRegItem
    if not ContinueRegSearch ; 멈추어야 합니다.
        return
}
; 주의: HKEY_USERS를 검색 중이라면
; HKEY_CURRENT_USER는 검색할 필요가 없다고 필자는 믿습니다.
; 마찬가지로 HKEY_LOCAL_MACHINE를 검색 중이라면.
; HKEY_CLASSES_ROOT도 검색할 필요가 없을 것입니다.
return

CheckThisRegItem:
if (A_LoopRegType = "KEY")  ; 키 이름도 점검하고 싶다면 다음 두 줄을 제거하십시오.
    return
RegRead, RegValue
if ErrorLevel
    return
if InStr(RegValue, RegSearchTarget)
{
    MsgBox, 4, , The following match was found:`n%A_LoopRegKey%\%A_LoopRegSubKey%\%A_LoopRegName%`nValue = %RegValue%`n`nContinue?
    IfMsgBox, No
        ContinueRegSearch := false  ; 호출자에게 검색을 멈추라고 알립니다.
}
return