みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C# アプリ起動バスについて

ビルドした後に、exeを置いている、起動パスを取得したいのです。

どうしたらいいか、教えてください。

投稿日時 - 2018-04-01 10:16:49

QNo.9483951

困ってます

質問者が選んだベストアンサー

No.1です。
実行ファイル自身のPATHは下記でいいのでは?
実行ファイルも含む場合は
Application.ExecutablePath
実行ファイルを含まない場合は
Application.StartupPath

Formロード時の事例は添付画像参照。
---
> この「@」って、なんのオマジナイですか。

文字列テキストに円記号が含まれる場合 (ファイル パスなど) の記述方法です。
マイクロソフトの「文字列 (C# プログラミング ガイド)」の
「標準リテラル文字列と逐語的リテラル文字列」参照。
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/strings/

投稿日時 - 2018-04-02 06:11:21

補足

回答ありがとうございます。
質問の記述が不十分で、お手数をかけましたが、解決いたしました。
ありがとうございます。


> この「@」って、なんのオマジナイですか。

とりあえず、
string PH = Application.StartupPath;
PH = PH + "\";
MessageBox.Show(PH);
を実行すると、エラー
PH = PH + @"\";
すると、OK。
・・・ということで、プチ理解。

「標準リテラル文字列と逐語的リテラル文字列」も、恥ずかしながら、半わかりで、ぼちぼち理解を深めたいと思います・

投稿日時 - 2018-04-02 09:32:09

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>System.IO.Path.GetDirectoryName(@"c:\windows\system32\notepad.exe");
この「@」って、なんのオマジナイですか。

"~"内の \によるエスケープを無効にします。
なので "\\\\" は @"\\" と書けます。

投稿日時 - 2018-04-02 05:26:04

補足

回答、ありがとうございます。

理解できました。
申し訳ないのですが、Best Answer は、質問の行きがかり上、他の方を選ばせていただきました。
今後とも、よろしくお願いします。

投稿日時 - 2018-04-02 09:35:52

ANo.1

「起動パス」?

ディレクトリを取得したい、ということであれば
GetDirectoryNameメソッドではどうですか。
たとえば
System.IO.Path.GetDirectoryName(@"c:\windows\system32\notepad.exe");
なら
c:\windows\system32 が返ります。
---
powershell で
split-path c:\windows\system32\notepad.exe -parent
のように実行して確認してみてください。

投稿日時 - 2018-04-01 14:31:33

補足

回答ありがとうございます。

知りたいのは、ビルド後に、作成したアプリが、必要とするデータを
読み込みたいわけです。作成したアプリと同じ場所に、データも置きたいと思ってます。

なので、FormLoadしたときに、このアプリとデータを置いてあるexeのフルパスが知りたいのです。

追加ですが、
>System.IO.Path.GetDirectoryName(@"c:\windows\system32\notepad.exe");
この「@」って、なんのオマジナイですか。

同様な例で、以前に"c:\windows\system32\notepad.exe"の部分を、文字列変数でやろうしたらしくじりました。どうすればいいのですか。

投稿日時 - 2018-04-01 16:54:41

あなたにオススメの質問