windows - Start et program med dynamisk sti i C #

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har lavet software, der starter et program i min AppData-mappe.


Hvad jeg ønskede at gøre er imidlertid at lade det løbe med en dynamisk vej.


Den aktuelle sti, jeg brugte, er:


new ProcessStartInfo(@"C:UsersuserAppDataLocalSOFTWAREPROGRAMFileprogram.exe")


Jeg vil dog have det til at gøre det muligt ikke bare at køre på 'bruger', men på alle brugere med AppData-mappen. Jeg forsøgte følgende vej (som fungerer, når du browser i mapper):


new ProcessStartInfo(@"\%USERPROFILE\%AppDataLocalSOFTWAREPROGRAMFileprogram.exe")


Med dette får jeg dog 'filen ikke fundet' -ror.


Hvordan vil jeg rette op på dette? Jeg vil have det til at fungere på forskellige brugere.


EDIT


Svaret virker i mit program, men arbejder ikke i den tjeneste, jeg forsøger at udvikle. Jeg har forsøgt:


(svaret)


new ProcessStartInfo(Environment.ExpandEnvironmentVariables(@"\%USERPROFILE\%AppDataLocalSOFTWAREPROGRAMFileprogram.exe"))


og


string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string specificFile = Path.Combine(folder, @"LocalSOFTWAREPROGRAMFileprogram.exe");

ProcessStartInfo(specificFile)


Dette fungerer i et program (konsolprojekt), men ikke i en tjeneste. Hvorfor er det?


Jeg udgiver specifikfilen mens du kører, men den indeholder kun LocalSOFTWAREPROGRAMFileprogram.exe

Bedste reference


Du kan bruge Environment.ExpandEnvironmentVariables-metoden til at få den egentlige sti fra miljøvariablen.


new ProcessStartInfo(Environment.ExpandEnvironmentVariables(@"\%USERPROFILE\%AppDataLocalSOFTWAREPROGRAMFileprogram.exe"))