Je reçois le message d'erreur lors de l'exécution du code suivant à partir d'un programme C # Console. P>
"Le système ne peut pas trouver le fichier spécifié " p> blockQuote>
Voici le code: p>
System.Diagnostics.Process.start ("C: \ Windows \ System32 \ cmd.exe / c "); p> blockQuote>
étrangement lorsque je omettons le commutateur / C, la commande peut exécuter !?! p>
Des idées ce que je fais mal? p>
7 Réponses :
Vous avez besoin d'ajouter @ avant le chemin. Comme ceci: @ "c: \ windows \ system32 \ cmd.exe / c" p>
Il y a une surcharge de départ pour prendre des arguments. Utilisez celui-là à la place.
System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe", "/c");
Je pense que la question est que vous essayez de passer un argument (/ c) dans le cadre du chemin.
Les arguments et le nom de fichier sont deux éléments distincts de la classe de processus. P>
Essayez p>
Eh bien, pour une chose, vous êtes un chemin de codage acharné, qui est déjà destiné à rompre sur le système de quelqu'un (tout l'installation de Windows n'est pas dans Mais le problème ici est que ces backslashes sont utilisées comme caractère d'échappement. Il existe deux façons d'écrire une chaîne de chemin comme celle-ci - échapper aux backslashes: p> ou utilisez le Vous devez également passer C: \ Windows code>).
@ code> pour désactiver l'échappement des barres anti-backslash: p>
/ c code> comme un argument, pas dans le chemin - Utilisez la deuxième surcharge de
processus.start < / code> comme indiqué ci-dessus. p> p>
processus.start code> prend un nom de fichier comme argument. Passez l'argument comme deuxième paramètre:
Je peux voir trois problèmes avec le code que vous avez publié:
1) Vous n'échappez pas votre chaîne de chemin de chemin correctement
2) Vous devez transmettre l'argument / c séparément sur le chemin que vous souhaitez exécuter
3) Vous supposez chaque machine que ce code est exécuté avec une installation C: \ Windows P>
Je proposerais l'écrire comme suit: P>
string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory,"cmd.exe"); System.Diagnostics.Process.Start(cmdPath, "/c");
Le moyen le plus simple consiste à ajouter le programme à la solution avec ajouter l'élément existant et à taper
Ne semble pas répondre à la question posée. L'OP a à voir avec des arguments de ligne de commande que vous ne démontrez pas du tout.
J'ai le même problème, mais à partir de la ligne de commande: U: \> cmd.exe Microsoft Windows [version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Tous les droits sont réservés. Le système ne peut pas trouver le chemin spécifié.