中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于用批处理命令修改注册表!!
« [1] [2] »
作者:
标题: 关于用批处理命令修改注册表!! 上一主题 | 下一主题
ken0212
初级用户





积分 24
发帖 8
注册 2006-4-10
状态 离线
『楼 主』:  关于用批处理命令修改注册表!!

今天遇到一个问题就是用批处理命令修改注册表时遇到不懂的问题!以下是我编写的代码:
@echo off
echo Windows Registry Editor Version 5.00>>ok.reg
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]>>ok.reg
echo "key"="C:\\WINDOWS\\key.exe">>ok.reg
regedit /s ok.reg
del ok.reg
不知道有没有错的!这是REG文件里的代码:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"key"="C:\\WINDOWS\\key.exe"
不明白是我在编写其他的注册项的时候就可以导入.但是有几个我怎么编也导不进去.我反复修改了N次了.应该没有问题了啊.我真的搞不清楚了.是不是命令用错了.麻烦高手指点一下.我都快疯了~~~如果可能的话加我QQ:50594677和我详细说一下!!

2006-4-10 23:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

代码应该是没有错误的。

把不能导入的代码贴出来,大家帮你看看,加QQ就免了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-4-11 09:02
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
ken0212
初级用户





积分 24
发帖 8
注册 2006-4-10
状态 离线
『第 3 楼』:  

就是上面的代码不能导入啊..不然你们在自己的机上试试.

2006-4-11 11:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 4 楼』:  

使用REG工具不是更好



http://www.msfans.net/bbs/
2006-4-11 11:54
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 5 楼』:  

呵呵 空行  

你空了么?

2006-4-11 12:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 6 楼』:  

另外路径是\  不要用\\
这个我也改过的

2006-4-11 12:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 7 楼』:  

TO 楼上:
在XP中已经不需要空行了,而且开头的Windows Registry Editor Version 5.00也可以用REGEDIT4来代替。另外路径中的\也要在前面加个\来转义。
Re 楼主:
个人认为代码是没有错的,而且根据你的描述:
“不明白是我在编写其他的注册项的时候就可以导入.但是有几个我怎么编也导不进去.我反复修改了N次了.应该没有问题了啊.”
初步认为,由于run键的特殊性,可能开启了杀毒软件的注册表监控,导致一经修改又被恢复,所以建议先关闭杀毒软件以及其他监视类软件再修改。另外也许有权限的可能在里面,不过只要没有特别设置,对于HKEY_CURRENT_USER下的键应该是可以更改的。个人认为楼主应该从这几方面着手去检查。

2006-4-11 13:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xuantian
高级用户





积分 587
发帖 282
注册 2006-4-10
状态 离线
『第 8 楼』:  

建议用reg命令,这样可以支持变量的录入

例如:
下面是拼音加加优盘版的部分批处理命令
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v %SystemRoot%\system32\pyjj4.ime /t REG_SZ /d WINXPSP2 /f  //Vista系统修正
set /p usbjj=    请输入当前路径后回车  //优盘加加路径
reg add "HKLM\SOFTWARE\jj4" /v "install path" /t REG_SZ /d "%usbjj%" /f  //优盘加加路径

%SystemRoot% 会替换为windows的安装路径
%usbjj% 会替换为键盘输入的字符

[ Last edited by xuantian on 2006-4-11 at 16:05 ]

2006-4-11 15:58
查看资料  发送邮件  发短消息 网志  OICQ (315594066)  编辑帖子  回复  引用回复
ken0212
初级用户





积分 24
发帖 8
注册 2006-4-10
状态 离线
『第 9 楼』:  

回复7楼:
你说的两种方法我都试过了.都是以失败告终.真的很郁闷.也不知道出现什么错误.7楼大哥你也可以自己试验一下.帮忙找一下是什么问题!也很希望高手来解答一下..~~
回复8楼:
我曾经看来有人用过setlocal命令和reg add 命令来修改注册表.以下是我看到的代码:
@echo off

setlocal

set regkey="HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Licensing Core"

reg add %regkey% /v EnableConcurrentSessions /T REG_DWORD /D 1 /f

endlocal
由于本人不太熟悉这两个命令.请高手给我讲解一下~~~谢谢了.

2006-4-11 21:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 10 楼』:  

用你的代码测试成功,当前用户只具有users组的权限,未开启杀毒软件(其实是没装过)。
代码看来是可行的,不知道你是怎么测试的。
你可以先手工在run键下添加一键试试。

2006-4-11 21:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ken0212
初级用户





积分 24
发帖 8
注册 2006-4-10
状态 离线
『第 11 楼』:  

我生成批处理文件后就直接双击运行了啊..我的用户是管理员的权限呢..应该不是这个问题吧.我也不知道是什么问题.但是我用reg add 命令就可以加进去.还有就是用reg add 命令时.有时候会出现参数太多的错误.请问一下这是什么错误.应该如何解决!!!

2006-4-11 21:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xuantian
高级用户





积分 587
发帖 282
注册 2006-4-10
状态 离线
『第 12 楼』:  

在使用 reg 命令时将添加的键和键值用引号引起来,这样之间有空格时才不会出错.
至于命令,可以使用帮助,都是中文的
比如: 添加注册项可用 reg add /? 来获取帮助等等....

2006-4-11 23:25
查看资料  发送邮件  发短消息 网志  OICQ (315594066)  编辑帖子  回复  引用回复
ken0212
初级用户





积分 24
发帖 8
注册 2006-4-10
状态 离线
『第 13 楼』:  

谢谢12楼.问题已经解决了..

2006-4-12 15:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xuantian
高级用户





积分 587
发帖 282
注册 2006-4-10
状态 离线
『第 14 楼』:  用批处理命令操作注册表的误区

Windows Registry Editor Version 5.00>>aaa.reg
用上面的命令来建立注册表临时文件,并通过它来间接操作注册表是不正确的方法.

原因是:

      通过这样操作保存的临时文件是超文本格式, 但 Windows Registry Editor Version 5.00 注册表却是(UniCode)双字节文本,NT的注册表一旦检测到注册表文件中的第一行为 Windows Registry Editor Version 5.00 时,就会将它最为二进制的NT注册表文件,理所当然的, 这个注册表文本也就被NT的注册表当作UniCode文本来出来了.
      
     一般来说,如果在此时,注册表项和值中没有空格时,应该是可以正常导入的,但如果其中一项或一值中有空格时,注册表的识别就会出错,比如"Windows NT".


     所以正确的写法应该是 REGEDIT4>>aaa.reg

     这样建立文件才会被NT的注册表当作纯文本格式的注册表文件(即Win9X系列的注册表文件格式),也就不会再出错了.

      Windows Registry Editor Version 5.00>>aaa.reg 的写法是混淆了注册表的格式感念!  所以有时会出错也就不奇怪了

暂时就写到这里吧, 想到后再继续:D

2006-4-12 16:35
查看资料  发送邮件  发短消息 网志  OICQ (315594066)  编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 15 楼』:  

嗯。NT平台的系统都是以 Unicode 来编码,而且这些系统都向下兼容 DOS/Win9x 用的 ANSI 编码。

NT系统下的“记事本”,其保存类型选项中就有几种文本类型。相比之下,Win9x的“记事本”真的逊色很多!



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2006-4-12 21:00
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: