Wenn ich einen Prozess mit ShellExecute
(oder in .net mit System.Diagnostics.Process.Start()
) starte, muss der zu startende Dateiname-Prozess kein vollständiger Pfad sein.Überprüfen, ob eine ausführbare Datei im Windows-Pfad existiert
Wenn ich Notizblock starten wollen, kann ich
Process.Start("notepad.exe");
statt
Process.Start(@"c:\windows\system32\notepad.exe");
verwenden, da die direcotry c:\windows\system32
Teil der Umgebungsvariable PATH ist.
Wie kann ich überprüfen, ob eine Datei im PATH vorhanden ist, ohne den Prozess auszuführen und ohne die PATH-Variable zu analysieren?
System.IO.File.Exists("notepad.exe"); // returns false
(new System.IO.FileInfo("notepad.exe")).Exists; // returns false
aber ich brauche etwas wie folgt aus:
System.IO.File.ExistsOnPath("notepad.exe"); // should return true
und
System.IO.File.GetFullPath("notepad.exe"); // (like unix which cmd) should return
// c:\windows\system32\notepad.exe
Gibt es eine vordefinierte Klasse, diese Aufgabe in der BCL zu tun?
Während eine solche vordefinierte Klasse wäre bequem sein (oder ist praktisch, wenn es vorhanden ist) nicht es nur noch eine Zeile, um den Pfad zu erhalten, dann check exists()? Sie hätten es schneller schreiben können, als die Frage zu stellen. Besonderer Grund/Notwendigkeit? Ich frage mich nur. – mickeyf
Yepp, sollte sehr einfach sein. Aber ich bin der Überzeugung, dass, wenn eine Aufgabe mit der bestehenden Bibliothek einer probammenden Sprache erledigt werden kann, ich diesen Weg vorziehe, um das Weel immer wieder neu zu erfinden. Wenn es nicht verfügbar ist, mache ich es mein eigenes. –