web-dev-qa-db-fra.com

Quelle est la raison du message d'erreur "Le système ne peut pas trouver le chemin spécifié"?

J'ai le dossier run dans le dossier system32. Lorsque je lance cmd à partir de Total Commander, j'ouvre une fenêtre d'invite de commande avec C:\Users\admin en tant que répertoire actuel et que vous voulez aller dans ce dossier, le message d'erreur suivant est affiché:

Le système ne peut pas trouver le chemin spécifié.

Lorsque j'ouvre cmd directement dans le dossier run, cela fonctionne parfaitement. Pourquoi?

La fenêtre d'invite de commande lors de l'ouverture dans C:\Windows\System32\run:

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

C:\Windows\System32>cd run

C:\Windows\System32\run>

La fenêtre d'invite de commande pour exécuter simplement 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.
12
Mi1anovic

Il y a pas seulement 1 %SystemRoot%\System32 Sous Windows x64. Il existe 2 de tels répertoires.

Le vrai répertoire %SystemRoot%\System32 Est destiné aux applications 64 bits. Ce répertoire contient un cmd.exe 64 bits.

Mais il existe aussi %SystemRoot%\SysWOW64 Pour les applications 32 bits. Ce répertoire est utilisé si une application 32 bits accède à %SystemRoot%\System32. Il contient un cmd.exe 32 bits.

Les applications 32 bits peuvent accéder à %SystemRoot%\System32 Pour les applications 64 bits en utilisant %SystemRoot%\Sysnative Dans chemin.

Pour plus de détails, voir la documentation de Microsoft sur Redirecteur de système de fichiers .

Je pense donc que vous avez créé le sous-répertoire run dans %SystemRoot%\System32 Pour les applications 64 bits et que vous exécutez cmd 32 bits pour lequel ce répertoire n'existe pas car il n'y a pas de sous-répertoire run dans %SystemRoot%\SysWOW64, qui est %SystemRoot%\System32 pour 32 bits cmd.exe.

Ou vous avez créé le sous-répertoire run dans %SystemRoot%\System32 Pour les applications 32 bits et exécutez cmd 64 bits pour lequel ce répertoire n'existe pas car il n'y a pas de sous-répertoire run dans %SystemRoot%\System32 car ce sous-répertoire n'existe que dans %SystemRoot%\SysWOW64.

Vous pouvez utiliser ce qui suit en haut de votre fichier de commandes dans le cas du sous-répertoire run est dans %SystemRoot%\System32 Pour les applications 64 bits:

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

Ensuite, vous devez appeler chaque application de la console du répertoire System32\run Avec %SystemPath% Dans votre fichier de commandes, par exemple %SystemPath%\run\YourApp.exe.

Comment ça marche?

Sous Windows x86, il n'y a pas de variable d'environnement ProgramFiles (x86) et, par conséquent, il n'y a vraiment que 1 %SystemRoot%\System32 Tel que défini en haut.

Sous Windows x64, il existe la variable d’environnement ProgramFiles (x86) avec une valeur. Sous Windows x64, il est en outre vérifié s'il existe des fichiers dans %SystemRoot%\Sysnative. Dans ce cas, le fichier de commandes est exécuté avec cmd.exe 32 bits et uniquement dans ce cas, %SystemRoot%\Sysnative Doit être utilisé. Sinon, %SystemRoot%\System32 Peut également être utilisé sous Windows x64, car lorsque le fichier de traitement par lots est démarré avec un fichier 64 bits cmd.exe, Il s'agit du répertoire contenant les applications de la console 64 bits (et votre sous-répertoire run).

Remarque: %SystemRoot%\Sysnative N'est pas un répertoire! Il n'est pas possible de cd à %SystemRoot%\Sysnative Ou d'utiliser if exist %SystemRoot%\Sysnative

6
Mofi

Vous avez juste besoin de:

Étape 1: Allez dans le répertoire personnel de C:\en tapant cd .. (2 fois)

Étape 2: Il apparaît maintenant C:\>

Étape 3: tapez dir Windows\System32\run

C'est tout, il affiche les fichiers complets et les détails du dossier dans le dossier cible.

enter image description here

Détails: j'ai utilisé Windows\System32\com dossier par exemple, vous devez taper votre propre nom de dossier, etc. Windows\System32\run

0