【求教】注册表多级嵌套删除!
本帖最后由 nyistjz 于 2021-1-5 09:15 编辑[*]我这边有写了一个简单的删除注册表程序,但目前只能删除一级嵌套的内容,如果里面嵌套的多了,就无法删除,请朋友们帮忙看一下,如何删除多级嵌套。
[*]如图的注册表样式,只能删除两级,请高手帮忙改造成可以删除任意多级嵌套,谢谢。
[*]
[*]
[*](defun registrydelete(regpath)
[*](foreach name (vl-registry-descendents regpath)
[*] (vl-registry-delete (strcat regpath "\\" name))
[*] (vl-registry-delete regpath)
[*])
[*])
[*](foreach name
[*](list
[*] "HKEY_CURRENT_USER\\Software\\Autodesk\\avzztls1"
[*] "HKEY_CURRENT_USER\\Software\\Autodesk\\avzztls2"
[*])
[*](registrydelete name)
[*])
本帖最后由 tryhi 于 2020-7-13 16:41 编辑
(command "SHELL" "reg delete HKEY_CURRENT_USER\\Software\\Autodesk\\avzztls2 /f")
一句话的事情搞那么复杂干嘛呢
想不用shell或者其他外部命令,你要写递归
请教高手,如果用递归的办法,这个函数如何来写,感谢 ! 搞定
;注册信息删除
(defun reginfodelete(p / fold)
(defun Fold(p);参数d为全局函数
(setq d (cons p d))
(foreach x (vl-registry-descendents p)(Fold(strcat p "\\" x)))
d ;倒序的文件列表,reverse可倒置扶正后返回
)
(foreach f (Fold p) (vl-registry-delete f))
)
;注册表清除的两种办法
(setq plist (list
"HKEY_CURRENT_USER\\Software\\Autodesk\\avzztls"
(strcat "HKEY_CURRENT_USER\\"(vlax-product-key)"\\Applications\\AutoCAD DuoTab.dll")
(strcat "HKEY_CURRENT_USER\\"(vlax-product-key)"\\Applications\\HotKeys.NET")
(strcat "HKEY_CURRENT_USER\\"(vlax-product-key)"\\Applications\\HotKeysCaps")
))
(foreach p plist (reginfodelete p));注册表清除法 我也试试看
页:
[1]