Как переименовать ключ в реестре?
Опубликовано: 18.02.2001
Исправлено: 13.03.2005
Версия текста: 1.0
К сожалению, в Win32 API нет функции, которая выполняла бы переименование ключа в реестре. Если проследить, каким образом редактор regedit.exe переименовывает ключ, нетрудно убедиться, что он просто копирует заданный ключ на новое место, а затем удаляет его на старом. Этой же стратегией можем воспользоваться и мы. В самом крупном приближении требуемая функция выглядит так.
RenameKey(HKEY hParentKey, LPCTSTR szSrc, LPCTSTR szTarg)
{
} |
Копирование ключей в реестре подробно рассмотрено в статье "Как скопировать ключ в реестре?", а удаление ключей - в статье "Как удалить ключ из реестра?". Нам остаётся только воспользоваться функциями CopyKey и DeleteKey, описанными в этих статьях. При этом функция RenameKey приобретает следующий вид.
LONG DeleteKey(HKEY hParentKey, LPCTSTR szKey);
LONG CopyKey(HKEY hSrcParent, HKEY hTargParent, LPCTSTR szSrcKey, LPCTSTR szTargKey);
RenameKey(HKEY hParentKey, LPCTSTR szSrc, LPCTSTR szTarg)
{
LONG nRes = CopyKey(hParentKey, hParentKey, szSrc, szTarg);
if(nRes != ERROR_SUCCESS)
return nRes;
return DeleteKey(hParentKey, szSrc);
} |
В качестве примера использования этой функции рассмотрим код, который изменяет имя ключа "Some key" из раздела HKEY_LOCAL_MACHINE на "Yet another key".
RenameKey(HKEY_LOCAL_MACHINE, "Some key", "Yet another key"); |
Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы
то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских
прав.