【问题标题】:What is the reason for the error message "System cannot find the path specified"?错误消息“系统找不到指定的路径”的原因是什么?
【发布时间】:2016-02-11 19:40:41
【问题描述】:

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

系统找不到指定的路径。

当我直接在文件夹run 中打开cmd 时,它运行良好。为什么?

C:\Windows\System32\run 中打开的命令提示符窗口:

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

C:\Windows\System32>cd run

C:\Windows\System32\run>

简单运行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.

【问题讨论】:

    标签: cmd directory system32


    【解决方案1】:

    以下内容对我有用:

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

    【讨论】:

    • 这让我免于痛苦:)
    • 该死...这是很棒的观察...一百万谢谢!
    【解决方案2】:

    在 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%SystemRoot%\System32 用于 32 位 cmd.exe 子目录 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

    它是如何工作的?

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

    但是在 Windows x64 上定义了环境变量 ProgramFiles(x86) 的值。因此,如果%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\* 检查使用此路径是否存在一个或多个文件。

    【讨论】:

      【解决方案3】:

      你只需要:

      第 1 步:输入 cd..(2 次)进入 C:\ 的主目录

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

      第三步:输入dir Windows\System32\run

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

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

      【讨论】:

        猜你喜欢
        • 2013-03-07
        • 2020-05-27
        • 2017-02-05
        • 2015-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多