明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: maghreb

[经验] lisp如何输出注册表?

[复制链接]
发表于 2024-1-8 19:13 | 显示全部楼层
maghreb 发表于 2024-1-8 19:04
我那下面几百上千个键值,如何用一句导出

(vl-registry-descendents "HKEY_CURRENT_USER\\SOFTWARE\\7-Zip") 这样可以获得此路径下所有目录
(vl-registry-descendents "HKEY_CURRENT_USER\\SOFTWARE\\7-Zip" t)这样是获得此路径下所有的子键名称
再用vl-registry-read 读取子键和键值 然后导出 一句话导出是不可能的 怎么也得十几 几十行代码
 楼主| 发表于 2024-1-8 21:11 | 显示全部楼层
飞雪神光 发表于 2024-1-8 19:13
(vl-registry-descendents "HKEY_CURRENT_USER\\SOFTWARE\\7-Zip") 这样可以获得此路径下所有目录
(vl-r ...

比如(startapp "cmd.exe /c reg export /y "hkey_current_user\\software\\7-zip" "d:\1.reg"")
但我不会写这个命令,不知道错在哪里
发表于 2024-1-8 21:26 | 显示全部楼层
maghreb 发表于 2024-1-8 21:11
比如(startapp "cmd.exe /c reg export /y "hkey_current_user\\software\\7-zip" "d:\1.reg"")
但我不 ...

这个我也看到了 试了好一会也没搞定
发表于 2024-1-9 09:50 | 显示全部楼层
maghreb 发表于 2024-1-8 19:06
你说的我知道,我那下面在子项,子项里还有子项,键和键值几百上千个,如何用一句导出,比如调用cmd之类 ...


你可打开AutoCAD安装程序的Visual LISP样板目录下的RegDump.LSP文件,可看到注册表函数的更多例子。在这个文件中,你可以找到一个名为(registry-tree-dump)的有用函数,它对指定注册表项执行递归来搜索到其下级的所有子项和值名。

提示:你可以创建一对Get和Set函数来保存和恢复注册表值,用于控制标准位置和错误捕获。你应该会发现以下两个函数是很有用的:

(setq G$REGROOT "HKEY_CURRENT_USER\\Software\\MyApplication\\")
(defun RegGet (key default / val)
  (if (= nil (setq val (vl-registry-read (strcat G$REGROOT key))))
    (progn
      (regset key default)
(setq val (vl-registry-read (strcat G$REGROOT key)))
    )
  )
  (if val val default)
)
(defun RegSet (key val)
  (vl-registry-write (strcat G$REGROOT key) "" val)
)
第十一章 注册表函数
http://bbs.mjtd.com/forum.php?mo ... 9350&fromuid=363233
(出处: 明经CAD社区)
发表于 2024-1-9 15:26 | 显示全部楼层
maghreb 发表于 2024-1-8 19:04
我那下面几百上千个键值,如何用一句导出

有个函数startapp,用它调用cmd或powershell,可以干任何事情。
发表于 2024-1-9 16:28 | 显示全部楼层
maghreb 发表于 2024-1-8 21:11
比如(startapp "cmd.exe /c reg export /y "hkey_current_user\\software\\7-zip" "d:\1.reg"")
但我不 ...

注册表导出这个我用startapp试过、不管用的、我现在也是问过这个问题、最后没搞定就百度自己制作了一个bat文件、双击bat文件直接导出、不用lisp了
 楼主| 发表于 2024-1-11 12:19 | 显示全部楼层
xiaocainiao 发表于 2024-1-9 16:28
注册表导出这个我用startapp试过、不管用的、我现在也是问过这个问题、最后没搞定就百度自己制作了一个ba ...

(startapp "cmd.exe /C" "reg export HKEY_CURRENT_USER\\SOFTWARE\\7-zip d:\\1.reg /y")

可以了,自己试出来的
发表于 2024-1-11 14:11 | 显示全部楼层
maghreb 发表于 2024-1-11 12:19
(startapp "cmd.exe /C" "reg export HKEY_CURRENT_USER\\SOFTWARE\\7-zip d:\\1.reg /y")

可以了, ...

我之前是用shell用的、会被杀毒软件拦截、是我记错了、我试试你这个方法
发表于 2024-1-11 15:00 | 显示全部楼层
maghreb 发表于 2024-1-11 12:19
(startapp "cmd.exe /C" "reg export HKEY_CURRENT_USER\\SOFTWARE\\7-zip d:\\1.reg /y")

可以了, ...

刚试了一下、确实可以、感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 16:16 , Processed in 0.165183 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表