无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 15483|回复: 66
打印 上一主题 下一主题

Reg2Bat_By Slore(生成同名bat文件,支持XP、WIN7、WIN7X64).VBS

    [复制链接]
跳转到指定楼层
#
发表于 2017-2-17 08:32:15 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 liuzhaoyzz 于 2017-11-16 10:47 编辑

原文http://slore.blogbus.com/logs/52627038.html
Slore编写的这个reg文件转换为bat文件,是逐句转换的,不是通过批处理生成临时reg文件然后导入的方法,很不错。
我做了以下修改:
1、该软件可以把注册表reg文件转换为批处理bat文件,支持XP、WIN7。
2、该软件改编自Slore的VBS脚本http://slore.blogbus.com/logs/52627038.html,在此表示感谢!
3、安装过程中会自动加入右击reg文件的关联菜单,卸载时会删除右击关联菜单。
注意右击菜单关联的程序32位的系统是C:\Program Files\双心reg2bat\双心reg2bat.exe,
64位的系统是C:\Program Files (x86)\双心reg2bat\双心reg2bat.exe
如果把软件安装在其他目录,请自行调整【注册控件.bat】中,对应的路径。
4、修正了reg转bat对于()的处理,确保正确转换。例如reg_sz数据中有C:\Program Files (x86)也可以正确导入。
5、把为了适应adodb.stream读取,将GetEncoding(FileName)函数中的ansi改为ascii。
6、增加了第二种方案:【临时reg导入方案(通用)】按钮,通过生成一个临时的注册表temp.reg文件,来导入,该方法较通用,但代码较长。默认方案点【打开】按钮是直接转换为批处理reg add、reg delete等语句,对于复杂字符处理不完善,但生成的批处理代码简洁。两种方案根据自己的喜好自行选择吧。
7、修正reg最后一行可能遗漏的问题。

Slore的这个VBS确实很不错,在此表示感谢!代码见附件:

给个例子:
右击新建bat、reg文件.reg
  1. Windows Registry Editor Version 5.00

  2. [HKEY_CLASSES_ROOT\.bat\ShellNew]
  3. "NullFile"=""
  4. "filename"="*.bat"

  5. [HKEY_CLASSES_ROOT\.reg\ShellNew]
  6. "NullFile"=""
  7. "filename"="*.reg"
复制代码


转换为右击新建bat、reg文件.bat
  1. @echo off
  2. reg add "HKCR\.bat\ShellNew" /v "NullFile" /d "" /f
  3. reg add "HKCR\.bat\ShellNew" /v "filename" /d "*.bat" /f
  4. reg add "HKCR\.reg\ShellNew" /v "NullFile" /d "" /f
  5. reg add "HKCR\.reg\ShellNew" /v "filename" /d "*.reg" /f
复制代码


转换为右击新建bat、reg文件(导入方案).bat
  1. @echo off
  2. attrib -s -h -r "%~dp0temp.reg"
  3. del "%~dp0temp.reg"
  4. >> "%~dp0temp.reg" echo Windows Registry Editor Version 5.00
  5. >> "%~dp0temp.reg" echo.
  6. >> "%~dp0temp.reg" echo [HKEY_CLASSES_ROOT\.bat\ShellNew]
  7. >> "%~dp0temp.reg" echo "NullFile"=""
  8. >> "%~dp0temp.reg" echo "filename"="*.bat"
  9. >> "%~dp0temp.reg" echo.
  10. >> "%~dp0temp.reg" echo [HKEY_CLASSES_ROOT\.reg\ShellNew]
  11. >> "%~dp0temp.reg" echo "NullFile"=""
  12. >> "%~dp0temp.reg" echo "filename"="*.reg"
  13. regedit /s "%~dp0temp.reg"
  14. del "%~dp0temp.reg"
复制代码

双心reg2bat截图.png (6.88 KB, 下载次数: 97)

VB版本截图

VB版本截图

Reg2Bat_By Slore(生成同名bat文件,支持XP、WIN7、WIN7X64).rar

5.08 KB, 下载次数: 308, 下载积分: 无忧币 -2

VBS版本

双心reg2bat V1.1.rar

299.61 KB, 下载次数: 446, 下载积分: 无忧币 -2

VB版本

评分

参与人数 5无忧币 +25 收起 理由
zhczf + 5 赞一个!
nytc006 + 5 很给力!
ql1307096 + 5 赞一个!
moran + 5 赞一个
freesoft00 + 5

查看全部评分

56#
发表于 2022-11-7 09:06:30 | 只看该作者
非常不错支持!
回复

使用道具 举报

55#
 楼主| 发表于 2022-6-13 18:29:42 | 只看该作者
kidzgy 发表于 2022-6-13 17:42
系统Windows10,x64,这个注册表的作用是,对着【计算机】右键,弹出【程序和功能】菜单
针对这个注册表 ...

算法都是slore提供的,可能对REG_EXPAND_SZ值转换确实有问题。
回复

使用道具 举报

54#
发表于 2022-6-13 17:42:27 | 只看该作者

系统Windows10,x64,这个注册表的作用是,对着【计算机】右键,弹出【程序和功能】菜单
  1. Windows Registry Editor Version 5.00

  2. [HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall]
  3. @="程序和功能"
  4. "SuppressionPolicy"=dword:4000003c
  5. "icon"="SHELL32.dll,162"

  6. [HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall\command]
  7. @=hex(2):72,00,75,00,6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,\
  8.   00,20,00,73,00,68,00,65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,\
  9.   2c,00,43,00,6f,00,6e,00,74,00,72,00,6f,00,6c,00,5f,00,52,00,75,00,6e,00,44,\
  10.   00,4c,00,4c,00,20,00,61,00,70,00,70,00,77,00,69,00,7a,00,2e,00,63,00,70,00,\
  11.   6c,00,00,00
复制代码
针对这个注册表文件,VBS无法转换,弹出如下提示。


至于双心,转换有瑕疵,与【Reg Converter v1.2】(来源sordum.org)比较,差异为:
  1. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall" /ve /d "程序和功能" /f
  2. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall" /v "SuppressionPolicy" /t REG_DWORD /d 1073741884 /f
  3. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall" /v "icon" /d "SHELL32.dll,162" /f
  4. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall\command" /ve /t  /d "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl" /f
  5. REM 以上部分为双心转换
  6. REM 以下部分为Reg Converter v1.2转换
  7. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall" /ve /t REG_SZ /d "程序和功能" /f
  8. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall" /v "SuppressionPolicy" /t REG_DWORD /d "1073741884" /f
  9. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall" /v "icon" /t REG_SZ /d "SHELL32.dll,162" /f
  10. reg add "HKCR\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Dezinstall\command" /ve /t REG_EXPAND_SZ /d "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl" /f
复制代码
综合以上,双心转换,对REG_EXPAND_SZ值转换有缺失,少了【REG_EXPAND_SZ】参数。




点评

算法都是slore提供的,可能对REG_EXPAND_SZ值转换确实有问题。  详情 回复 发表于 2022-6-13 18:29
回复

使用道具 举报

53#
发表于 2021-7-7 16:31:58 | 只看该作者
非常实用的工具
回复

使用道具 举报

52#
发表于 2021-7-7 15:20:48 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

51#
发表于 2021-6-13 20:13:43 来自手机 | 只看该作者
多:谢
回复

使用道具 举报

50#
发表于 2021-6-13 11:19:31 | 只看该作者
这样其实很慢,导入的效率很低,比生成Reg再导入慢了一大截
回复

使用道具 举报

49#
 楼主| 发表于 2021-6-13 10:57:14 | 只看该作者
kkkssc 发表于 2021-6-13 00:19
网上找了半天,没发现直接转的,几个软件都是先把reg文档先嵌入bat内部,用的时候输出。reg,然后导入reg, ...

本来就是直接转的。
回复

使用道具 举报

48#
发表于 2021-6-13 00:19:32 | 只看该作者
网上找了半天,没发现直接转的,几个软件都是先把reg文档先嵌入bat内部,用的时候输出。reg,然后导入reg,  谁有直接转bat的共享一下,  意思是用的 reg 命令,比如reg add hklm\system\mount........

点评

本来就是直接转的。  详情 回复 发表于 2021-6-13 10:57
回复

使用道具 举报

47#
发表于 2021-6-12 23:43:51 | 只看该作者
论坛有个reg2cmd的也挺好用的。
回复

使用道具 举报

46#
发表于 2017-12-3 18:23:22 | 只看该作者
非常好.这样不用自己写了
回复

使用道具 举报

45#
发表于 2017-12-1 00:04:41 | 只看该作者
这个不错,试试如何。
回复

使用道具 举报

44#
 楼主| 发表于 2017-11-16 15:55:41 | 只看该作者
VBS很难调试,VB版本是否可用?
回复

使用道具 举报

43#
发表于 2017-11-16 15:41:46 | 只看该作者
win7-x86出现这样的错误

20171116153957.jpg (27.84 KB, 下载次数: 40)

20171116153957.jpg
回复

使用道具 举报

42#
发表于 2017-11-16 14:35:59 | 只看该作者
谢谢楼主的分享!
回复

使用道具 举报

41#
发表于 2017-11-16 11:34:22 | 只看该作者
感谢楼主更新,支持下。
回复

使用道具 举报

40#
 楼主| 发表于 2017-11-16 10:51:43 | 只看该作者
更新了VB版本,
1、无论32位还是64位,强制安装在C:\Program Files下面,避免出现右击菜单失效的问题。
2、完善了卸载菜单,确保卸载后右击菜单被去掉。
如果有需要的请重新在一楼下载即可。
回复

使用道具 举报

39#
发表于 2017-3-15 21:38:07 | 只看该作者
漂亮,非常好用。
回复

使用道具 举报

38#
 楼主| 发表于 2017-3-14 15:13:30 | 只看该作者
7、修正reg最后一行可能遗漏的问题。
已在一楼重新上传。对Slore的代码不是很了解,他本人应该最懂。

回复

使用道具 举报

37#
发表于 2017-3-14 09:21:35 | 只看该作者
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\{C2FBB630-2971-11D1-A18C-00C04FD75D13}]
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\{C2FBB631-2971-11D1-A18C-00C04FD75D13}]

转完剩一条了

reg add "HKCR\AllFilesystemObjects\shellex\ContextMenuHandlers\{C2FBB630-2971-11D1-A18C-00C04FD75D13}" /f
回复

使用道具 举报

36#
发表于 2017-2-25 21:38:31 | 只看该作者
又有修改,下载看看。
回复

使用道具 举报

35#
 楼主| 发表于 2017-2-21 16:47:09 | 只看该作者
本帖最后由 liuzhaoyzz 于 2017-2-21 16:49 编辑

VBS基本上都是调用各种组件和对象,拼接起来,如果操作系统没有提供这种组件,就要寻找替代方案了。这是VBS本身的问题,每种语言都有他的优点和不足,网页服务器和客户端还不是有很多VBS JS脚本。
VB调用的还是commondialog,VBS下面只有xp支持这个组件,WIN7以上都不支持,要用其它组件比如mshta方案代替。
回复

使用道具 举报

34#
发表于 2017-2-21 16:41:24 来自手机 | 只看该作者
liuzhaoyzz 发表于 2017-2-19 08:31
VB的代码,不能完全复制到VBS中运行,反之亦然。VBS适合实现一些简单的功能,上面几位要求右击reg文件运行 ...
VBS能实现选择文件的对话框就已经很吃力了


这是真的吗?是vbs本身问题,还是?

我还准备有空学下vbs呢,看来以后还是研究au3吧……
回复

使用道具 举报

33#
 楼主| 发表于 2017-2-21 16:30:23 | 只看该作者
5、把为了适应adodb.stream读取,将GetEncoding(FileName)函数中的ansi改为ascii。
6、增加了第二种方案:【临时reg导入方案(通用)】按钮,通过生成一个临时的注册表temp.reg文件,来导入,该方法较通用,但代码较长。默认方案点【打开】按钮是直接转换为批处理reg add、reg delete等语句,对于复杂字符处理不完善,但生成的批处理代码简洁。两种方案根据自己的喜好自行选择吧。
附件已重新上传在1楼,请重新下载。
回复

使用道具 举报

32#
发表于 2017-2-21 14:09:02 | 只看该作者
谢谢大神付出
回复

使用道具 举报

31#
发表于 2017-2-21 11:39:20 | 只看该作者
这个非常有用,谢谢
回复

使用道具 举报

30#
 楼主| 发表于 2017-2-21 08:02:18 | 只看该作者
frg521 发表于 2017-2-20 21:46
能转换此注册表成功吗使用键盘上所有符号-因为注册表除了反斜杠都有效

随便加几个符号就没法使用了,vbs ...

看了下你这个注册表文件,要是能转换那真是神了,你这个题目我是无能为力,bat中有很多特殊字符,对于特殊字符,处理起来需要大量的代码,程序只能处理一般字符。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\~!@#$%^&*)(_+|}{":>?<[];'.,/=- ABC`123 ) ( )&& ^ % =-]
"~!@#$%^&*)(_+|}{\":>?<[];'.,/=- ABC`123 ) ( )&& ^ % =-"="~!@#$%^&*)(_+|}{\":>?<[];'.,/=- ABC`123 ) ( )&& ^ % =-"
@=hex(7):7e,00,21,00,40,00,23,00,24,00,25,00,5e,00,26,00,2a,00,29,00,28,00,5f,\
  00,2b,00,7c,00,7d,00,7b,00,22,00,3a,00,3e,00,3f,00,3c,00,5b,00,5d,00,3b,00,\
  27,00,2e,00,2c,00,2f,00,3d,00,2d,00,20,00,41,00,42,00,43,00,60,00,31,00,32,\
  00,33,00,20,00,29,00,20,00,28,00,20,00,29,00,26,00,26,00,20,00,5e,00,20,00,\
  25,00,20,00,3d,00,2d,00,00,00,00,00
"~!@#$%^&*)(_+|}{\":>?<[];'.,/=- ABC`123 ) ( )&& ^ % =-2"=hex(2):7e,00,21,00,\
  40,00,23,00,24,00,25,00,5e,00,26,00,2a,00,29,00,28,00,5f,00,2b,00,7c,00,7d,\
  00,7b,00,22,00,3a,00,3e,00,3f,00,3c,00,5b,00,5d,00,3b,00,27,00,2e,00,2c,00,\
  2f,00,3d,00,2d,00,20,00,41,00,42,00,43,00,60,00,31,00,32,00,33,00,20,00,29,\
  00,20,00,28,00,20,00,29,00,26,00,26,00,20,00,5e,00,20,00,25,00,20,00,3d,00,\
  2d,00,32,00,00,00
回复

使用道具 举报

29#
发表于 2017-2-20 22:29:27 来自手机 | 只看该作者
非常不错支持!
回复

使用道具 举报

28#
发表于 2017-2-20 21:35:57 | 只看该作者
liuzhaoyzz 发表于 2017-2-20 16:49
索性直接上传附件完事,见1楼。
VBS,VB版本附件rar。
修正了reg转bat对于()的处理,确保正确转换。例 ...

大赞! 用你最新的.vbs在64位win7执行一切正常了。这真是好东东。
感谢您的无私共享!  谢谢你!
回复

使用道具 举报

27#
 楼主| 发表于 2017-2-20 16:49:00 | 只看该作者
489432757 发表于 2017-2-20 10:30
VBS可能认编码,直接复制是UNICODE编码,而且有空行,应该是因为这样才报错。
用PECMD脚本转换一下应该 ...

索性直接上传附件完事,见1楼。
VBS,VB版本附件rar。
修正了reg转bat对于()的处理,确保正确转换。例如reg_sz数据中有C:\Program Files (x86)也可以正确导入。
请重新下载,XP WIN7X86 WIN7X64测试通过。
WIN8以上未测试。

点评

大赞! 用你最新的.vbs在64位win7执行一切正常了。这真是好东东。 感谢您的无私共享! 谢谢你!  详情 回复 发表于 2017-2-20 21:35
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-12 00:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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