无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 11183|回复: 66
打印 上一主题 下一主题

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

    [复制链接]
跳转到指定楼层
1#
发表于 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, 下载次数: 60)

VB版本截图

VB版本截图

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

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

VBS版本

双心reg2bat V1.1.rar

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

VB版本

评分

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

查看全部评分

2#
 楼主| 发表于 2017-2-17 08:43:11 | 显示全部楼层
取消IPC等共享.reg
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
  3. "AutoShareServer"=dword:00000000
  4. "AutoShareWks"=dword:00000000

  5. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
  6. "restrictanonymous"=dword:00000001
复制代码


取消IPC等共享.bat
  1. @echo off
  2. reg add "HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v "AutoShareServer" /t REG_DWORD /d 0 /f
  3. reg add "HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v "AutoShareWks" /t REG_DWORD /d 0 /f
  4. reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "restrictanonymous" /t REG_DWORD /d 1 /f
复制代码

点评

用来删除的.reg,能转换吗?  详情 回复 发表于 2017-2-17 12:09
回复

使用道具 举报

3#
 楼主| 发表于 2017-2-18 06:58:15 来自手机 | 显示全部楼层
是你的注册表文件不对吧?减号在主键前面的意思就是把主键删除,主键都删除了,你后面还要默认键值的@参数干啥?删除键值的减号在等号后面,有区别。[-HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\igfxcui]
回复

使用道具 举报

4#
 楼主| 发表于 2017-2-18 18:54:09 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2017-2-20 16:43 编辑

做了个VB版本的,源代码在C盘已开源,未做详细测试:
双心reg2bat软件说明:
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)也可以正确导入。
   根据自己的喜好自行选择吧~~~卸载时会删除右击关联菜单。
                                           ------双心软件

附件上传到了1楼。

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

双心reg2bat截图.png
回复

使用道具 举报

5#
 楼主| 发表于 2017-2-19 08:31:42 | 显示全部楼层
VB的代码,不能完全复制到VBS中运行,反之亦然。VBS适合实现一些简单的功能,上面几位要求右击reg文件运行程序,不是不能实现,而是一旦在注册表注册,vbs脚本所在的位置和文件名就不能更改,所以我索性用VB来实现,VB程序安装到C盘固定的地方,一般没人会去移动他,就不会有问题;Windows右击菜单关联的程序位置和名字一般都不能修改,修改了右击菜单就异常,比如你把notepad.exe改个名字,右击菜单“用记事本打开”可能就异常了。还有文件选择过滤,初始目录等问题,VBS能实现选择文件的对话框就已经很吃力了,这是VB该干的事情。

点评

这是真的吗?是vbs本身问题,还是? 我还准备有空学下vbs呢,看来以后还是研究au3吧……  详情 回复 发表于 2017-2-21 16:41
抱歉是我表达有误。我并不是复制你VB的源代码,而是直接复制你论坛的VBS脚本代源。另存为VBS脚本来运行出错。  详情 回复 发表于 2017-2-19 22:25
回复

使用道具 举报

6#
 楼主| 发表于 2017-2-20 08:43:31 | 显示全部楼层
哦,我理解有误,不好意思。
VBS脚本很难调试,而且你运行程序没有任何错误提示,我在WIN7 X64电脑不能重现你说的问题,很难以定位问题,可能脚本还是有需要完善的地方吧。
另外右击以管理员身份运行,或者右击获取管理员权限再运行,试试。
可能创建自动化对象失败,如果是Scripting.FileSystemObject (FSO 文本文件读写)被关闭了,
开启FSO功能即可,在“运行”中执行以下语句试试看。
  1. regsvr32 scrrun.dll
复制代码

如果不行,我也没办法了~~~用VB程序吧~~~
回复

使用道具 举报

7#
 楼主| 发表于 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
回复

使用道具 举报

8#
 楼主| 发表于 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
回复

使用道具 举报

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

使用道具 举报

10#
 楼主| 发表于 2017-2-21 16:47:09 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2017-2-21 16:49 编辑

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

使用道具 举报

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

回复

使用道具 举报

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

使用道具 举报

13#
 楼主| 发表于 2017-11-16 15:55:41 | 显示全部楼层
VBS很难调试,VB版本是否可用?
回复

使用道具 举报

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

本来就是直接转的。
回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-7 16:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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