Processus.Start(): Le système ne peut pas trouver le fichier spécifié, mais mon chemin d'accès au fichier semble être légitime
C'est ahurissant mon esprit. En utilisant le code suivant:
Process du = new Process();
string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory, "du.exe");
Debug.WriteLine(cmdPath);
ProcessStartInfo info = new ProcessStartInfo(cmdPath);
info.CreateNoWindow = true;
info.Arguments = arguments;
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
du.StartInfo = info;
du.EnableRaisingEvents = true;
du.OutputDataReceived += responseParser;
du.Start();
du.BeginOutputReadLine();
du.WaitForExit();
Je l'exécuter, et j'obtiens:
Exception Non Gérée: System.ComponentModel.Win32Exception: Le système ne peut pas trouver le fichier spécifié
si la valeur de sortie de cmdPath est C:\Windows\system32\du.exe
!
et bien sûr, si je viens de taper le contenu de cmdPath
dans une invite de commande, il fonctionne du.exe et me donne les informations d'utilisation.
Aussi, si je remplace le chemin de commande avec juste "du.exe" et mettez le du.exe dans le répertoire de travail, tout fonctionne très bien. Mais je veux faire référence l'un à l'emplacement du système.
Donc, ce qui se passe? Aussi loin que je peux dire, j'ai un fichier légitime prescripteur, mais pourquoi ne pas Process.Start()
l'exécuter? Ce code de base est également l'exécution de plusieurs autres programmes et l'obtention de leur sortie. Les autres, tous les beaux travaux, bien que du.exe est différent en ce qu'il est dans le répertoire system32. Le fait d'avoir quelque chose à faire avec elle?
Grâce
OriginalL'auteur whatsisname | 2012-04-27
Vous devez vous connecter pour publier un commentaire.
C'est la redirecteur de système de fichier. Vous allez être en cours d'exécution d'un processus 32 bits sur un ordinateur 64 bits. Cela signifie que
C:\Windows\system32
est redirigé versC:\Windows\SysWOW64
et j'espère quedu.exe
ne l'y trouve pas. Si vous utilisezC:\Windows\Sysnative
place, alors vous serez en mesure de localiser le fichier.Cependant, je soupçonne que vous avez ajouté
du.exe
dans le répertoire système puisque ce n'est pas une norme de composant de Windows. Vous ne devriez pas le faire. Je vous recommande de mettre le fichier quelque part d'autre parce que vous simplement ne doit pas être écrit dans le répertoire système.Mais vous ne devriez pas être en le mettant dans le répertoire système. C'est réservé pour le système. Je suis sûr que vous pouvez trouver un meilleur endroit pour votre unix ensemble d'outils.
C'est en fait la SysInternals du. Je suis d'accord, il ne devrait pas y être, mais ses il y sur plusieurs machines, alors maintenant, j'ai à traiter avec elle.
C'est toujours un outil Unix FWIW. De toute façon, il semble que vous êtes de retour sur la bonne voie!
OriginalL'auteur David Heffernan