Gera-sim пишет:Согласен, если просто нужен быстрый результат. Но иногда нужна и красивая оболочка, позволяющаяя и сделать выбор действия, и определить какие-либо настройки.
На "Главной" есть описание работы на VBS с реестром - чтение/запись/удаление - см Рецепты WMI: работа с реестром Windows, и даже примеры работы, в т.ч. и рекурсивного чтения веток. Взяв этот пример за образец, я сделал еще и так сказать недостающее в описании - рекурсивное удаление. Т.е. команда удаления ключа, может удалить только ключ, в котором нет подключей, иначе приходится это делать рекурсивно.
Я его реализовал так:
'--- Запуск рекурсивного удаления всех веток раздела реестра'
' pPC - имя машины, с реестром которой работаем
' pROOT - одна из констант : Const HKLM = &H80000002 / Const HKEY_USERS = &H80000003
' pKeyPath - путь к разделу
Function uf_recursDelSubkeys(pPC, pROOT, pKeyPath)
retDel = 0 ' накапливаем возвращаемые коды ошибок - для определения успешности удаления в целом'
retDel = uf_DeleteSubkeys (pPC, pROOT, pKeyPath)
uf_recursDelSubkeys = retDel
End FUNCTION
Function uf_DeleteSubkeys (pPC, pROOT, pKeyPath)
retDel = 0
Set objRegistry = GetObject("winmgmts:\\" & pPC & "\root\default:StdRegProv")
objRegistry.EnumKey pROOT, pKeyPath, arrSubkeys
If IsArray(arrSubkeys) Then
For Each strSubkey In arrSubkeys
retDel = retDel + uf_DeleteSubkeys (pPC, pROOT, pKeyPath & "\" & strSubkey)
Next
End If
ret = objRegistry.DeleteKey (pROOT, pKeyPath)
retDel = retDel + ret
Set objRegistry = Nothing
uf_DeleteSubkeys = retDel
End FUNCTION
О самой программе, использующей такое удаление, рассказывал в ветке - HTA/CMD: Инструмент редактирования реестра удаленной системы. Может она Вам подойдет в качестве "красивой" оболочки. Если попробуете ее и решите, что не хватает какого-то функционала, то дайте знать - скрипт у меня так сказать "не заброшен", могу чего и дописать. Это приложение для случаев, если Вы хотите вносить изменения в чьем-то удаленном реестре. А если надо всего лишь "красиво" подтверждать изменения в своем реестре - пишите скрипт по примерам из "Главной" и перемежевывайте его диалогами подтверждения - MsgBox().
А я в свою очередь поинтересуюсь у коллег - есть ли какие-то идеи по реализации переименования существующего ключа реестра, кроме создания ключа с новым именем и рекурсивного копирования в него содержимого ключа со старым именем и далее с последующим удалением старой ветки ?
WBR. Roman