中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [已结]如何在打开CMD时自动运行DOSKEY禁止使用某些命令
作者:
标题: [已结]如何在打开CMD时自动运行DOSKEY禁止使用某些命令 上一主题 | 下一主题
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『楼 主』:  [已结]如何在打开CMD时自动运行DOSKEY禁止使用某些命令 使用 LLM 解释/回答一下

我看到一篇关于doskey的介绍:
doskey dir=dong
这样dir就失去作用了同样也用于其它的命令
用Doskey命令“封杀”format:doskey format=NO

我就将
doskey dir=dong
doskey format=NO
写入C\AUTOEXEC.BAT 中,
可是不起作用!

我将这两句直接写在cmd上,可以用,可是退出cmd,再次启用cmd,命令失效!
doskey应当是驻留内存的,我的系统怎么做不到?
(我的系统是XP-sp2,cmd;doskey均是系统自带的,试了doskey.com一样无效)
究竟哪里错了???
还望前辈指点一下。 在此先谢了!

Last edited by willsort on 2006-6-9 at 17:31 ]


2006-5-31 22:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ick
初级用户




积分 28
发帖 12
注册 2006-5-29
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

你所讲的写入AUTOEXEC.BAT,不知是98还是XP,98下应该是有用的,而XP是完全不读这个AUTOEXEC.BAT文件的。
要在2KXP的CMD环境下起作用,必须把你的代码写到SYSTEM32目录下的AUTOEXEC.NT里。

2K/XP的CMD是一个虚拟DOS,就像一个虚拟机,退出以后就所有设置全部清空复原了,这和98里的COMMAND是完全不同的。
你退出一个CMD再进入,就象DOS系统重启了一样,所以DOSKEY就无效了。
要做了上面的设置才会在每次启动CMD里起作用。

Last edited by ick on 2006-5-31 at 22:39 ]


2006-5-31 22:32
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

谢谢你的答复,大意我已经明白,我先试试,有问题再请教!


2006-5-31 23:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

Originally posted by ick at 2006-5-31 22:32:
你所讲的写入AUTOEXEC.BAT,不知是98还是XP,98下应该是有用的,而XP是完全不读这个AUTOEXEC.BAT文件的。
要在2KXP的CMD环境下起作用,必须把你的代码写到 ...


系统是XP-sp2,cmd;doskey均是系统自带的
我已将
doskey dir=dong
doskey format=NO
写入 \WINDOWS\system32\AUTOEXEC.NT 中(添加在末尾),并重起系统,可是依然无效!

是否命令行有误?

Last edited by yunli on 2006-5-31 at 23:51 ]


2006-5-31 23:47
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

Re yunli:

在XP下,根目录下的AUTOEXEC.BAT并非完全被忽略。而system32下的autoexec.nt配置的NT下的DOS虚拟机NTVDM,入口为command.com,与cmd.exe没有关系。可以参考以下信息(可通过关键字“autoexec.nt”按内容搜索“解答室”和“命令行专区”而得)。

要在cmd.exe中实现类似autoexec.bat的应用,需要设置注册表信息,在其中指定要自动运行的批处理或其它类型的可执行程序。

MSDOS7.10启动过程中各因素的相互影响
http://www.cn-dos.net/forum/viewthread.php?tid=17107

Win2000/XP中的命令行
http://www.cn-dos.net/forum/viewthread.php?tid=20682

引自命令行帮助文档 cmd /?

如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找
以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或
两个都存在,这两个变量会先被执行。

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

和/或

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun



───────────────── 版主提示 ─────────────────
为了节约你我的时间和论坛的空间,请善用论坛的“搜索”功能和网络的搜索引擎。
本论坛搜索功能链接:http://www.cn-dos.net/forum/search.php
推荐国内信息资源搜索引擎:http://www.baidu.com/
推荐国际信息资源搜索引擎:http://www.google.com/
───────────────── 版主提示 ─────────────────


Last edited by willsort on 2006-6-1 at 01:03 ]




※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-1 00:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

先谢谢斑竹,我再学习一下!


2006-6-1 22:49
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

Re yunli:

在命令行或者批处理中执行以下语句,可以实现打开cmd时使用doskey屏蔽del和format和doskey命令。不过这种方法的安全系数较低,对于有命令行经验的人来数,有数种方法可以解除这层屏蔽。


reg add "HKLM\Software\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "c:\autoexec.bat" /f
echo @echo off>c:\autoexec.bat
echo doskey del=cls>>c:\autoexec.bat
echo doskey format=cls>>c:\autoexec.bat
echo doskey doskey=cls>>c:\autoexec.bat


如何防止doskey.com在内存中被卸载
http://www.cn-dos.net/forum/viewthread.php?tid=19202

Last edited by willsort on 2006-6-2 at 00:20 ]




※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-2 00:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

谢谢~

我将它复制到 c:\autoexec.bat 并运行了(双击;重起),均能执行del命令,再将它保存为bat文件执行,(启动cmd时出现doskey界面,按f7没有反应) 也还可执行del命令?


2006-6-2 07:33
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

Re yunli:

请详细描述出现的“doskey界面”,必要时请复制粘贴屏幕上的文字内容。




※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-8 12:37
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
wl00560
银牌会员





积分 1384
发帖 709
注册 2005-10-29
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

刚才看了一下,楼主的问题应该这样解决。
其一,autoexec.bat只对dos有效,autoexec.nt只对xp下的command有效,对cmd无效。
其二,如果要在cmd下获得doskey的效果(楼主是这个意思吧)
应该:
1,先建立一个bat文件,如my.bat,然后输入类似:
doskey dir=no
之类的话。
2,按照5楼的提示,在注册表那个位置的autorun中建立一个字符值,内容就是:
文件的路径\my.bat。
再启动cmd,ok。
ps:如果失败,不必重启系统。只须关闭cmd,再打开cmd,即可使改动生效。


2006-6-8 21:22
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

Re wl00560:

7楼的代码在我的测试中是有效的,当然我未想到楼主会将批处理保存到autoexec.bat中,这里需要保存为其他的批处理文件名,而且楼主也曾这样做了。但依然出现错误,这就只可能是楼主的命令行环境中对doskey.com的支持存在某些问题,所以需要楼主指出具体的出错信息。

另外,最初书写7楼代码时,之所以将屏蔽命令的批处理生成到c:\autoexec.bat下,只是为了保持形式上的“向下兼容”;现在想来,这很可能会导致初学者混淆autoexec.bat在NT和9X下的不同地位和不同作用。所以考虑将原代码中的 c:\autoexec.bat 改为了%SystemRoot%\AutoRun.cmd 。


:: AutoCmd.cmd - autoexec script of cmd.exe
:: Will Sort - V2 - 2006-06-09 - CMD@WinXP
@echo off
reg add "HKLM\Software\Microsoft\Command Processor" /v AutoRun /t REG_EXPAND_SZ /d "%SystemRoot%\AutoRun.cmd" /f
>  %SystemRoot%\AutoRun.cmd echo @echo off
>> %SystemRoot%\AutoRun.cmd echo doskey del=cls
>> %SystemRoot%\AutoRun.cmd echo doskey format=cls
>> %SystemRoot%\AutoRun.cmd echo doskey doskey=cls


Last edited by willsort on 2006-6-9 at 01:43 ]




※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-6-9 01:34
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

感谢上面两位得热心解答!

我查看了注册表的AuotRun,它一共有4处,一处为 c:\autoexec.bat
其他三处键值为1
那是不是我不用改路径,直接将内容写入 c:\autoexec.bat即可?

我将doskey dir=no 写入c:\autoexec.bat,运行cmd时有反应!它加载了(启动时先出现doskey dir=no )可是键入dir时,一样可以运行嘛?再按f7,显示的是0:dir.见图
也许我注册表其他的三处键值要改???

Last edited by yunli on 2006-6-9 at 12:31 ]


附件 1: 1.jpg (2006-6-9 12:30, 42.92 KiB, 下载附件所需积分 1 点 ,下载次数: 1)


2006-6-9 07:44
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

其他三处键值为1的都是Cdrom,应该不管它们的事吧!
我又将doskey dir=no保存在c:\my.bat.同时改写了注册表的路径,效果与上面的图一样!


2006-6-9 12:47
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
wl00560
银牌会员





积分 1384
发帖 709
注册 2005-10-29
状态 离线
『第 14 楼』:   使用 LLM 解释/回答一下

短消息已收到,我试了一下,应该如下操作:
找到HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
1,建立一个字符串值,autorun
2,把它定义为c:\my.bat。
3,然后建立my.bat,输入如:doskey dir=no。
4,启动cmd,我这儿成功
PS:如果不想有显示,可以在my.bat顶端加上:@echo off的字样


2006-6-9 14:50
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yunli
初级用户





积分 56
发帖 27
注册 2006-5-31
状态 离线
『第 15 楼』:   使用 LLM 解释/回答一下

感谢wl00560与willsort的详细解答.

真是一通百通,两种方法均能实现!
殊途同归嘛!一种自己写入,一种用批处理方法写入!

再次感谢各位热心的帮助!

Last edited by yunli on 2006-6-9 at 16:47 ]


2006-6-9 15:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: