cmd 找不到文件路径 ?

 

来自:http://blog.csdn.net/godttj/

题描述:
在win2kpro的 client 上,执行.bat和.cmd,提示“找不到文件路径”, 检查regedit 中cmdfile open,也是 "%1" %* 。
其实这样的问题,在其他一些文件类型上也发生过,比如office的文档,autocad文档。 一旦出现这样的问题,双击响应的文件类型,就提示“找不到文件路径”,但先启动程序,再打开就可以, 是哪里出错导致了这样的问题呢?
 
分析:
一般来说,右键点击当前CMD文件默认动作或者双击事件是“打开”。执行regedit.exe,打开 注册表编辑器确定cmdfile 子键下,open /command 都是对应的的执行命令,对比cmdfile 子键下的子键和键值是否和其它工作正常的机器上的内容完全一样。把open的命令改成REG _E XPAND _SZ类型且值为%SystemRoot%\System32\NOTEPAD.EXE %1看看双击是否可以用Notepad打开。 但这些步骤仍然没有能够找到问题所在。
我尝试用 Filemon和Regmon 来监控批处理的执行过程,看看双击CMD文件时系统访问了哪些 注册表键和系统文件。这样,我们就可以跟踪查找问题。
(注:这两个 工具,可以在这里获得 http://www.sysinternals.com/ntw2k/utilities.shtml
解决:
用filemon监控批处理的执行过程中,看到它居然首先寻找域用户 home folder上的cmd.exe 
我马上就想到问题的所在了,设定了域用户的home folder后,系统默认首要搜索路径会变成home folder,而不再是当前路径,而恰巧home folder上存在一个cmd.exe,而cmd shell 在win2k\winxp 中不支持 unc作为当前路径的,会提示出错,然后转到系统目录,而批处理所处的位置肯定不在系统目录,
故而会提示这样的错误。
那么剩下的事情就好办了,要么更改 注册表 HKEY _CURRENT _USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
REG _DWORD  StartRunNoHOMEPATH 设定为 1
要么将home folder上的cmd.exe更名,或者移动到其他位置即可解决问题。

你可能感兴趣的:(cmd)