Variable d'environnement Process.Start () et PATH
J'ai le texte suivant trivial application en C# qui, tout simplement, les tentatives de lancement "jconsole.exe" que ma machine est situé dans C:\Programs\jdk16\bin.
using System;
using System.Diagnostics;
namespace dnet {
public class dnet {
static void Main( string[] args ) {
try {
Process.Start("jconsole.exe");
Console.WriteLine("Success!");
} catch (Exception e) {
Console.WriteLine("{0} Exception caught.", e);
}
}
}
}
Si ma variable d'environnement PATH est fixé à
c:\windows;c:\windows\sytem32;c:\programs\jdk16\bin
il fonctionne parfaitement. Toutefois, si la variable d'environnement PATH est fixé à
c:\windows;c:\windows\sytem32;c:\\programs\jdk16\bin
(notez les deux barres obliques inverses entre "c:" et "programmes"), il échoue avec une exception win32.
System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at dnet.dnet.Main(String[] args)
Il est intéressant de noter, dans la même invite de commande lorsque je lance le .NET programme et obtenir de l'exception, il me suffit de taper "jconsole.exe" et le programme va commencer. Windows semble avoir aucun mal à trouver l'exécutable avec la double barre oblique inverse dans le CHEMIN, mais le Processus.Start ().
Pourquoi est la barre oblique inverse supplémentaire dans le CHEMIN d'accès à l'origine des problèmes, et comment je peux contourner le problème? Je ne sais pas où est l'exécutable, je tiens à appeler sera situé à l'exécution, donc, je préfère compter sur la variable de CHEMIN d'accès.
source d'informationauteur Reg Domaratzki
Vous devez vous connecter pour publier un commentaire.
Pas très bien pourquoi le problème se produit. Cependant, je peux penser à une solution qui fonctionne sur ma machine:
Je n'ai trouver un para qui m'a donné l'idée de cette solution. À partir de la la documentation des Processus.Démarrer
La façon dont je l'ai lu, même si le
PATH
variable contenait un chemin d'accès valide que Windows est en mesure d'utiliser,Process.Start
est pas en mesure de l'utiliser et besoins le chemin d'accès complet .Vous pouvez le résoudre si vous créez d'abord un
ProcessStartInfo
.Vous devrez trouver vous-même la façon de manipuler le CHEMIN pour le faire fonctionner pour vous. Mais ce qui devrait résoudre tous les problèmes que vous pourriez avoir avec votre variable PATH.