Ich habe eine Software erstellt, die ein Programm in meinem AppData-Ordner startet.Starten eines Programms mit dynamischen Pfad in C#
Was ich jedoch tun wollte, ist es mit einem dynamischen Pfad laufen zu lassen.
Der Strompfad I verwendet wird:
new ProcessStartInfo(@"C:\Users\user\AppData\Local\SOFTWAREPROGRAM\File\program.exe")
Ich möchte es aber es möglich machen, auf ‚Benutzer‘ nicht nur laufen, sondern auf alle Benutzer mit dem AppData-Ordner. Ich habe versucht, den folgenden Pfad (das funktioniert, wenn in den Verzeichnissen Surfen):
new ProcessStartInfo(@"%USERPROFILE%\AppData\Local\SOFTWAREPROGRAM\File\program.exe")
Damit aber ich erhalte die ‚Datei found'-Fehler nicht.
Wie würde ich das korrigieren? Ich möchte, dass es bei verschiedenen Benutzern funktioniert.
EDIT
Die Antwort in meinem Programm funktioniert, aber im Dienst funktioniert nicht ich zu entwickeln bin versucht. Ich habe versucht:
(die Antwort)
new ProcessStartInfo(Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Local\SOFTWAREPROGRAM\File\program.exe"))
und
string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string specificFile = Path.Combine(folder, @"\Local\SOFTWAREPROGRAM\File\program.exe");
ProcessStartInfo(specificFile)
Dieses in einem Programm (Konsolenprojekt) funktioniert, aber nicht in einem Service. Warum ist das?
I Ausgang des specificFile beim Laufen, aber es enthält nur \Local\SOFTWAREPROGRAM\File\program.exe
Mögliche Duplikat [Wie kann ich den Pfad des aktuellen Benutzers „Application Data“ Ordner bekommen?] (Http://stackoverflow.com/questions/915210/how-can-i-get-the- Pfad des aktuellen Benutzer-Anwendungsdaten-Ordners) – ASh
Die Zeichenfolge durch Environment.ExpandEnvironmentVariables –
ausführen Die Absicht dieses Ordners ist es, Anwendungsdaten zu speichern, nicht die Anwendung selbst. – Crowcoder