2009-10-04 1 views
3

Как переименовать ключ в реестре с помощью C++?Registry - Как переименовать ключ в реестре с помощью C++?

Я хочу переименовать ключ «Myapp \ Version1» в «Myapp \ Version2».

Я не вижу в MSDN каких-либо функций о переименовании ключей в реестре.

+0

Что вы можете сделать, это сохранить строку версии в реестре под MyApp. Затем вместо переименования или копирования и удаления вам просто нужно будет обновить значение строки версии. – xian

ответ

4

Нет функции для переименования в старых версиях окон, вам необходимо скопировать/удалить на свой собственный AFAIK.

+0

Спасибо, anders :) – Jasmin25

7

Если вашему приложению требуется Vista или более поздняя версия Windows, вы можете использовать RegCopyTree(), а затем RegDeleteTree().

+0

Спасибо Ferruccio, я буду реализовывать это :) – Jasmin25

3

, если вам нужна поддержка XP, можно использовать SHCopyKey с последующим RegDeleteKeyEx

+1

'RegDeleteKeyEx' не доступен на 32-разрядной XP. Там у вас есть только один вариант, т. Е. Использовать 'RegDeleteKey' – c00000fd

2

Я знаю, что это старая запись, но в случае, если кто-то приходит смотреть, как я ...

В this MSDN page, кто-то нашел недокументированный RegRenameKey(hKey, keyName, newKeyName), доступный с Vista и далее.

2

Некоторые подробнее об этой старой записи:

NTRenameKey() старый API для переименования ключа реестра.

Кроме того, Pavel имеет дополнительную информацию о вызове RegRenameKey(), упомянутом в ответе randomsock, и (хотя это вопрос на C++) предоставляет эту красивую сигнатуру PInvoke для нее.

[DllImport("advapi32")] 
public static extern int RegRenameKey(
    SafeRegistryHandle hKey, 
    [MarshalAs(UnmanagedType.LPWStr)] string oldname, 
    [MarshalAs(UnmanagedType.LPWStr)] string newname); 
Смежные вопросы