2017-05-17 10 views
0

나는 Windows 레지스트리에서 다음 하위 키를 생성하는 프로그램을 작성했습니다. 두 번째 프로그램은 하위 키가 삭제되기 전에 하위 키에 추가 하위 키 또는 값이 들어 있는지 확인해야합니다. 하위 키에 추가 하위 키나 값이 포함되어 있지 않으면 하위 키가 삭제됩니다.레지스트리 키가 레지스트리 값이나 하위 키에 영향을 미치지 않는지 확인하는 가장 좋은 방법은 무엇입니까? 내가 처음으로 프로그램이 무엇을 실행 취소 번째 프로그램을 작성했습니다</p> <pre><code>HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonSpecialAccountsUserList </code></pre> <p>:

하위 키에 하위 키 또는 값이 포함되어 있는지 어떻게 확인할 수 있습니까?

답변

4

사용 RegQueryInfoKey()는 :

지정된 레지스트리 키에 대한 정보를 검색합니다.이 [아웃, 선택 사항]
변수에 대한 포인터가 수신

lpcSubKeys : 그것은 출력, 그것이 당신에게 유용한 다음과 같은 두 개의 매개 변수를 가지고 할 수있는 많은 다른 매개 변수의 사이에

지정된 키에 포함되는 하위 키 수. 이 매개 변수는 NULL 일 수 있습니다.

lpcValues ​​ [아웃 옵션]
키와 관련된 값들의 수를받는 변수의 포인터. 이 매개 변수는 NULL 일 수 있습니다.

이렇게 말하면 지정된 키에 하위 키가 있지만 값이없는 경우 RegDeleteKey()이 실패합니다. 따라서 하위 키의 존재 여부는 값에 대해서만 확인할 필요가 없습니다. 값이없는 경우 함수가 정상적으로 실패하게하십시오.

더 간단한 해결 방법은 SHDeleteEmptyKey()을 사용하는 것입니다. 키에 하위 키 또는 값이 있으면 실패합니다. 그렇다면 수동으로 점검 할 필요가 없습니다.

+0

MSDN 링크 "SHDeleteEmptyKey"가 손상되었습니다. –

+0

@NorbertWillhelm이 수정되었습니다. –

3
+2

MSDN의 예제에서 RegQueryInfoKey를 방금 발견했습니다. 그 기능은 나에게 해결책처럼 보인다. –

+0

예. 그렇게 할 것입니다. 일상적인 연구가 필요합니다. –