2009-10-04 25 views
3

C++을 사용하여 레지스트리에서 키의 이름을 바꾸는 방법은 무엇입니까?레지스트리 - C++을 사용하여 레지스트리에서 키의 이름을 바꾸는 방법은 무엇입니까?

키 "Myapp \ Version1"의 이름을 "Myapp \ Version2"로 변경하고 싶습니다.

MSDN에서 레지스트리의 키 이름을 변경하는 기능이 표시되지 않습니다.

+0

레지스트리에서 MyApp 아래의 버전 문자열을 저장할 수 있습니다. 그런 다음 이름 바꾸기 또는 복사 및 삭제 대신 버전 문자열의 값을 업데이트하면됩니다. – xian

답변

4

이전 버전의 Windows에서는 이름을 바꾸는 기능이 없으므로 직접 AFAIK에서 복사/삭제해야합니다. 당신은 XP를 지원해야하는 경우

+0

감사합니다. ander :) – Jasmin25

7

앱에 Vista 또는 최신 버전의 Windows가 필요한 경우 RegCopyTree() 다음에 RegDeleteTree()을 사용할 수 있습니다.

+0

감사합니다 Ferruccio, 내가 구현할 것입니다 :) – Jasmin25

3

, 나는이 오래된 항목입니다 알고 있지만 경우 사람에서 다른 사람,보고 온다 SHCopyKeyRegDeleteKeyEx

+1

32 비트 XP에서는'RegDeleteKeyEx'를 사용할 수 없습니다. 거기에는'RegDeleteKey'를 사용하는 옵션 하나만 있습니다. – c00000fd

2

다음에 사용할 수 this MSDN page에서

, 사람 ... 나 같은 Vista에서 구할 수있는 문서화되지 않은 RegRenameKey(hKey, keyName, newKeyName)을 발견했습니다.

2

이 오래된 항목에 대한 일부 추가 정보를 원하시면 :

NTRenameKey() 레지스트리 키의 이름을 변경하는 오래된 API입니다.

또한 Pavel에는 randomsock의 대답에서 언급 한 RegRenameKey() 호출에 대한 자세한 정보가 있습니다. (이것은 C++ 질문이지만)이 멋진 PInvoke 서명을 제공합니다.

[DllImport("advapi32")] 
public static extern int RegRenameKey(
    SafeRegistryHandle hKey, 
    [MarshalAs(UnmanagedType.LPWStr)] string oldname, 
    [MarshalAs(UnmanagedType.LPWStr)] string newname); 
관련 문제