Как переименовать ключ в реестре с помощью C++?Registry - Как переименовать ключ в реестре с помощью C++?
Я хочу переименовать ключ «Myapp \ Version1» в «Myapp \ Version2».
Я не вижу в MSDN каких-либо функций о переименовании ключей в реестре.
Как переименовать ключ в реестре с помощью C++?Registry - Как переименовать ключ в реестре с помощью C++?
Я хочу переименовать ключ «Myapp \ Version1» в «Myapp \ Version2».
Я не вижу в MSDN каких-либо функций о переименовании ключей в реестре.
Нет функции для переименования в старых версиях окон, вам необходимо скопировать/удалить на свой собственный AFAIK.
Спасибо, anders :) – Jasmin25
Если вашему приложению требуется Vista или более поздняя версия Windows, вы можете использовать RegCopyTree(), а затем RegDeleteTree().
Спасибо Ferruccio, я буду реализовывать это :) – Jasmin25
, если вам нужна поддержка XP, можно использовать SHCopyKey с последующим RegDeleteKeyEx
'RegDeleteKeyEx' не доступен на 32-разрядной XP. Там у вас есть только один вариант, т. Е. Использовать 'RegDeleteKey' – c00000fd
Я знаю, что это старая запись, но в случае, если кто-то приходит смотреть, как я ...
В this MSDN page, кто-то нашел недокументированный RegRenameKey(hKey, keyName, newKeyName)
, доступный с Vista и далее.
Некоторые подробнее об этой старой записи:
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);
Что вы можете сделать, это сохранить строку версии в реестре под MyApp. Затем вместо переименования или копирования и удаления вам просто нужно будет обновить значение строки версии. – xian