中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 02:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享]发现reg import的一处bug 查看 1,432 回复 10
楼 主 [分享]发现reg import的一处bug 发表于 2008-06-25 17:59 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
日前测试一个简单的.reg文件的导入
结果发现reg import开关的一个bug

当.reg文件中含有中文注释时
reg import会导入不完整
而且无任何错误提示

随着中文注释的增多
导入所缺失的表项就越多

下面是一个测试范例


REGEDIT4


"NoStartMenuSubFolders"=dword:00000001
;从「开始」菜单删除用户文件夹

"NoWindowsUpdate"=dword:00000001
;删除到“Windows Update”的访问和链接

"NoSMMyDocs"=dword:00000001
;从「开始」菜单中删除“我的文档”图标

"NoRecentDocsMenu"=dword:00000001
;从「开始」菜单上删除“文档”菜单

"NoNetworkConnections"=dword:00000001
;从「开始」菜单删除“网络连接

"NoFavoritesMenu"=dword:00000001
;从「开始」菜单中删除“收藏夹”菜单

"NoFind"=dword:00000001
;从「开始」菜单中删除“搜索”菜单

"NoSMHelp"=dword:00000001
;从「开始」菜单删除“帮助”命令

"NoRun"=dword:00000001
;从「开始」菜单中删除“运行”菜单

"NoSMMyPictures"=dword:00000001
;从「开始」菜单中删除“图片收藏”图标

"NoStartMenuMyMusic"=dword:00000001
;从「开始」菜单中删除“我的音乐”图标

"NoStartMenuNetworkPlaces"=dword:00000001
;从「开始」菜单中删除“网上邻居”图标

"NoNetHood"=dword:00000001
;隐藏桌面上“网上邻居”图标

"NoPropertiesMyDocuments"=dword:00000001
;从“我的文档”上下文菜单中删除“属性”

"NoPropertiesMyComputer"=dword:00000001
;从“我的电脑”上下文菜单中删除“属性”

"DisablePersonalDirChange"=dword:00000001
;禁止用户更改“我的文档”路径

"NoShellSearchButton"=dword:00000001
;从 Windows 资源管理器上删除搜索按钮

"NoViewOnDrive"=dword:03FFFFFF
;隐藏“我的电脑”中的这些指定的驱动器

"NoDrives"=dword:03FFFFFF
;防止从“我的电脑”访问驱动器

"NoSharedDocuments"=dword:00000001
;从“我的电脑”删除共享文档

"DisallowRun"=dword:00000001
;不要运行指定的 Windows 应用程序


"1"="setup.exe"


"NoEntireNetwork"=dword:00000001
;“网上邻居”中不含“整个网络”


"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000001
;从桌面删除“回收站”图标

"{20D04FE0-3AEA-1069-A2D8-08002B30309D}"=dword:00000001
;删除桌面上的“我的电脑”图标

"{450D8FBA-AD25-11D0-98A8-0800361B1103}"=dword:00000001
;删除桌面上的“我的文档”图标
2 发表于 2008-06-25 19:03 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
20年会员
UID 59307
状态 离线
可以改用
regedit/s *.reg
┌───────┐
├→学习→实践→┤
└───────┘
3 发表于 2008-06-25 19:10 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
直接复制的这段脚本,reg import regfilename 之后没有发现有注册表项的丢失啊。

OS : Windows Server 2003 Enterprise Edition sp2
4 发表于 2008-06-25 20:59 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
忘了提测试环境:WinXP SP2
03的reg.exe与XP明显有别

改用regedit /s也是后来的折中办法
当然也可以将注释改成英文的或者拼音

另外记起XP的reg query也有个关于中文的bug来着
谁还记着?
5 发表于 2008-06-25 21:21 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
记得是会和谐掉最后几个字符..
6 发表于 2008-06-25 21:35 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
记起来了
似乎是当键值中出现了中文或其它双字节字符时
query的结果会被截断
丢失的字节数约等于出现的双字节字符数

当然
03里已经没有这个问题了
7 发表于 2008-06-25 22:04 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
据说WinXP SP3的reg没有这个bug
8 发表于 2008-06-25 23:36 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
20年会员
UID 59307
状态 离线
那将SP3中的reg复制过来能用吗?
┌───────┐
├→学习→实践→┤
└───────┘
9 发表于 2008-06-26 10:03 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by qzwqzw at 2008-6-25 09:35 PM:
记起来了
似乎是当键值中出现了中文或其它双字节字符时
query的结果会被截断
丢失的字节数约等于出现的双字节字符数

当然
03里已经没有这个问题了

我的测试结果没有发现问题

WinXP SP2 英文版
Microsoft Windows XP
(C) Copyright 1985-2001 Microsoft Corp.

C:\Test>reg query HKEY_LOCAL_MACHINE\SOFTWARE /v 哈哈

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE
哈哈 REG_SZ 我们 测试


WinXP SP3 中文版
Microsoft Windows XP
(C) 版权所有 1985-2001 Microsoft Corp.

C:\test>reg query HKEY_LOCAL_MACHINE\SOFTWARE /v 哈哈

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE
哈哈 REG_SZ 我们 测试


我的测试用例有问题吗?
10 发表于 2008-06-26 14:00 ·  中国 江西 南昌 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
为什么偏偏漏掉了最常用的XP SP2 中文版?
11 发表于 2008-06-26 14:07 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我没有WinXP SP2 中文版环境
公司的电脑全是英文版的
WinXP SP3 中文版还是我在虚拟机上装的
有时间再装个WinXP SP2 中文版试试
呵呵
论坛跳转: