私のAppDataフォルダにプログラムが起動するソフトウェアを作成しました。私はしかし、やりたいことC#で動的パスのプログラムを起動する
は、それが動的パスで実行させることです。
私は現在使用されているパスは次のとおりです。
new ProcessStartInfo(@"C:\Users\user\AppData\Local\SOFTWAREPROGRAM\File\program.exe")
私はそれはしかし、単に 'ユーザではなく、AppDataフォルダを持つすべてのユーザーで実行しないようにすることができるようにしたいです。私は(ディレクトリに参照するとき動作します)次のパスを試してみました。これにより
new ProcessStartInfo(@"%USERPROFILE%\AppData\Local\SOFTWAREPROGRAM\File\program.exe")
しかし、私は「ファイルがfound'エラーがない得ます。
どうすればこの問題を修正できますか?私はそれが別のユーザーで動作するようにします。
EDIT
答えは私のプログラムで動作しますが、私は開発しようとしているサービスでは動作しません。私が試してみました:
(答)
と
string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string specificFile = Path.Combine(folder, @"\Local\SOFTWAREPROGRAM\File\program.exe");
ProcessStartInfo(specificFile)
をこれがプログラム(コンソールプロジェクト)ではなく、サービスで動作します。どうしてこれなの?
I出力specificFile実行中にそれだけであなたは、環境変数から実際のパスを取得するにはEnvironment.ExpandEnvironmentVariablesメソッドを使用することができます\Local\SOFTWAREPROGRAM\File\program.exe
可能な重複[私は、現在のユーザーの「アプリケーションデータ」フォルダのパスを取得できますか?](http://stackoverflow.com/questions/915210/how-can-i-get-the-現在のユーザーのアプリケーションデータパスのフォルダ) – ASh
Environment.ExpandEnvironmentVariablesを通じて文字列を実行します –
そのフォルダの目的は、アプリケーション自体ではなくアプリケーションデータを格納することです。 – Crowcoder