- ベストアンサー
C# アプリ起動バスについて
ビルドした後に、exeを置いている、起動パスを取得したいのです。 どうしたらいいか、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 実行ファイル自身のPATHは下記でいいのでは? 実行ファイルも含む場合は Application.ExecutablePath 実行ファイルを含まない場合は Application.StartupPath Formロード時の事例は添付画像参照。 --- > この「@」って、なんのオマジナイですか。 文字列テキストに円記号が含まれる場合 (ファイル パスなど) の記述方法です。 マイクロソフトの「文字列 (C# プログラミング ガイド)」の 「標準リテラル文字列と逐語的リテラル文字列」参照。 https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/strings/
その他の回答 (2)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
>System.IO.Path.GetDirectoryName(@"c:\windows\system32\notepad.exe"); この「@」って、なんのオマジナイですか。 "~"内の \によるエスケープを無効にします。 なので "\\\\" は @"\\" と書けます。
補足
回答、ありがとうございます。 理解できました。 申し訳ないのですが、Best Answer は、質問の行きがかり上、他の方を選ばせていただきました。 今後とも、よろしくお願いします。
- kteds
- ベストアンサー率42% (1882/4440)
「起動パス」? ディレクトリを取得したい、ということであれば GetDirectoryNameメソッドではどうですか。 たとえば System.IO.Path.GetDirectoryName(@"c:\windows\system32\notepad.exe"); なら c:\windows\system32 が返ります。 --- powershell で split-path c:\windows\system32\notepad.exe -parent のように実行して確認してみてください。
補足
回答ありがとうございます。 知りたいのは、ビルド後に、作成したアプリが、必要とするデータを 読み込みたいわけです。作成したアプリと同じ場所に、データも置きたいと思ってます。 なので、FormLoadしたときに、このアプリとデータを置いてあるexeのフルパスが知りたいのです。 追加ですが、 >System.IO.Path.GetDirectoryName(@"c:\windows\system32\notepad.exe"); この「@」って、なんのオマジナイですか。 同様な例で、以前に"c:\windows\system32\notepad.exe"の部分を、文字列変数でやろうしたらしくじりました。どうすればいいのですか。
補足
回答ありがとうございます。 質問の記述が不十分で、お手数をかけましたが、解決いたしました。 ありがとうございます。 > この「@」って、なんのオマジナイですか。 とりあえず、 string PH = Application.StartupPath; PH = PH + "\"; MessageBox.Show(PH); を実行すると、エラー PH = PH + @"\"; すると、OK。 ・・・ということで、プチ理解。 「標準リテラル文字列と逐語的リテラル文字列」も、恥ずかしながら、半わかりで、ぼちぼち理解を深めたいと思います・