错误消息 "System cannot find the path specified" 的原因是什么?

What is the reason for the error message "System cannot find the path specified"?

我在文件夹 system32 中有文件夹 run。当我从 Total Commander 中 运行 cmd 打开命令提示符 window 并将 C:\Users\admin 作为当前目录并想进入该文件夹时,输出以下错误消息:

System cannot find the path specified.

当我直接在文件夹 run 中打开 cmd 时,效果很好。为什么?

C:\Windows\System32\run 中打开时的命令提示符 window:

C:\Windows\System32\run>cd..

C:\Windows\System32>cd run

C:\Windows\System32\run>

命令提示符 window 只需 运行ning cmd:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Všetky práva vyhradené.

C:\Users\admin>cd..

C:\Users>cd..

C:\>cd windows

C:\Windows>cd system32

C:\Windows\System32>cd run
Systém nemôže nájst’ zadanú cestu.

您只需要:

第 1 步:通过键入 cd.. 进入 C:\ 主目录(2 次)

第 2 步:现在出现 C:\>

第 3 步:键入 dir Windows\System32\run

就是这样,它显示了目标文件夹中的完整文件和文件夹详细信息。

详细信息:我以Windows\System32\com文件夹为例,您应该输入自己的文件夹名称等。Windows\System32\run

在 Windows x64 上不仅有 1 %SystemRoot%\System32。有2个这样的目录。

真正的 %SystemRoot%\System32 目录是为 64 位应用程序准备的。此目录包含 64 位 cmd.exe.

但是对于 32 位应用程序也有 %SystemRoot%\SysWOW64。如果 32 位应用程序访问 %SystemRoot%\System32,则使用此目录。它包含一个 32 位 cmd.exe.

32 位应用程序可以通过在路径中使用别名 %SystemRoot%\Sysnative 访问 64 位应用程序的 %SystemRoot%\System32

有关详细信息,请参阅有关 File System Redirector 的 Microsoft 文档。

因此子目录 run 是在 %SystemRoot%\System32 中为 64 位应用程序创建的,而 32 位 cmd 是在 运行 中创建的,该目录不存在,因为%SystemRoot%\SysWOW64 中没有子目录 run 对于 32 位 cmd.exe %SystemRoot%\System32 子目录 run 是在 %SystemRoot%\System32 中为 32 位应用程序创建,64 位 cmd 为 运行,因为 %SystemRoot%\System32 中没有子目录 run,因此该目录不存在因为此子目录仅存在于 %SystemRoot%\SysWOW64.

如果 64 位应用程序的子目录 run 位于 %SystemRoot%\System32 中,则可以在批处理文件顶部使用以下代码:

@echo off
set "SystemPath=%SystemRoot%\System32"
if not "%ProgramFiles(x86)%" == "" if exist %SystemRoot%\Sysnative\* set "SystemPath=%SystemRoot%\Sysnative"

System32\run 目录中的每个控制台应用程序必须在批处理文件中使用 %SystemPath% 执行,例如 %SystemPath%\run\YourApp.exe.

它是如何工作的?

ProgramFiles(x86) 在 Windows x86 上没有环境变量,因此实际上只有顶部定义的 %SystemRoot%\System32

但是定义了环境变量 ProgramFiles(x86),其值在 Windows x64 上。因此,如果 %SystemRoot%\Sysnative 中有文件,则会在 Windows x64 上进行额外检查。在这种情况下,批处理文件当前由 32 位 cmd.exe 处理,只有在这种情况下才需要使用 %SystemRoot%\Sysnative。否则 %SystemRoot%\System32 也可以在 Windows x64 上使用,因为当批处理文件由 64 位 cmd.exe 处理时,这是包含 64 位控制台应用程序的目录(以及子目录 run).

注意:%SystemRoot%\Sysnative不是目录! cd%SystemRoot%\Sysnative 或使用 if exist %SystemRoot%\Sysnativeif exist %SystemRoot%\Sysnative\ 是不可能的。它是一个仅适用于 32 位可执行文件的特殊别名,因此有必要使用 if exist %SystemRoot%\Sysnative\cmd.exe 或更一般的 if exist %SystemRoot%\Sysnative\*.

检查使用此路径是否存在一个或多个文件

以下对我有用:

  1. 打开Registry Editor(按windows键,输入regedit并点击Enter)。
  2. 导航到 HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 并清除值。
  3. 同时勾选 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun.