Windows 命令前的空格绕过DOSKEY

Windows 命令前的空格绕过DOSKEY,windows,command-prompt,Windows,Command Prompt,我不想让我的用户在命令行中运行“dir”,所以我使用DOSKEY将“dir”别名为“CLS”。测试人员发现,在“DIR”前面加空格可以绕过别名 在设置DOSKEY时,我试图在“DIR”之前加一个空格,但是命令提示符忽略了空格 有人找到了制造DOSKEY确认空间的方法吗 谢谢。拒绝您的用户对所有相关位置的列表目录内容权限。这可能是更简单的方法。这样他们就可以运行dir,但它没有任何用处 我甚至不想弄明白你为什么想要这样的东西 关于doskey:正如您所注意到的,宏替换是逐字进行的,并且只在命令行的

我不想让我的用户在命令行中运行“dir”,所以我使用DOSKEY将“dir”别名为“CLS”。测试人员发现,在“DIR”前面加空格可以绕过别名

在设置DOSKEY时,我试图在“DIR”之前加一个空格,但是命令提示符忽略了空格

有人找到了制造DOSKEY确认空间的方法吗

谢谢。

拒绝您的用户对所有相关位置的列表目录内容权限。这可能是更简单的方法。这样他们就可以运行
dir
,但它没有任何用处

我甚至不想弄明白你为什么想要这样的东西


关于
doskey
:正如您所注意到的,宏替换是逐字进行的,并且只在命令行的开头进行。那你想做什么呢?为
dir
cls
创建宏,前面有1、2、3、…、8188个空格?

黑名单几乎不起作用,在这种情况下肯定不会起作用。例如,只需反复按TAB键,即可列出目录中的文件


相反,使用白名单。编写一个控制台应用程序,接收用户输入,检查输入是否是允许用户运行的命令,如果是,则将该命令传递给shell,或者更好的是,自己实现“已批准”的命令,这样(a)就不会有任何使用特殊字符的欺骗行为,以及(b)您可以从“已批准的应用程序”列表中删除cmd.exe-您正在使用软件限制策略,对吗?

即使您能够想出如何使DOSKEY宏想法发挥作用(我认为您不能),这也毫无意义。用户可以通过创建以下批处理文件轻松绕过此限制:

@dir %*

DOSKEY宏不在批处理文件中工作,因此没有任何东西可以阻止批处理文件的执行。你的用户可以随意命名批处理文件,这样你就有了一个魔鬼般的时间监控。

你到底为什么要这么做?另外,为了回答您的具体问题,您不能使用空格来表示DOSKEY宏名称,即使可以,您希望如何避免用户在之前输入2、10或1000个空格?如果你告诉我们你到底想要实现什么,也许有更好的解决方案…不管这个别名是什么解决方案。。。需要不同的解决方案。上次我不得不拒绝用户访问内部命令时,我使用了
command.COM
上的十六进制编辑器。。。我不知道这在今天会起多大作用