• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#でカレントディレクトリの取得方法について)

C#でカレントディレクトリを取得する方法

このQ&Aのポイント
  • C#でカレントディレクトリの取得方法について自作の.exeファイルの置かれているディレクトリ場所を取得するプログラムを作成する方法を教えてください。
  • 自作exeファイルのディレクトリ構造は、「*:*/hoge/plugin/自作.exe」です。この時、一個上のディレクトリを参照して、ディレクトリパスを取得する方法などがありますか?
  • また、以下のプログラムではできなかったのですが、参考までに載せました。string stParentName = System.IO.Path.GetDirectoryName(@"*:*/hoge/plugin/自作.exe"); MessageBox.Show(stParentName);

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

  • ベストアンサー
回答No.1

こんばんは >一個上のディレクトリを参照して、ディレクトリパスを取得する *:*/hoge/pluginを取得することでしょうか? 上記の仮定ですと System.IO.FileInfo ofile = new System.IO.FileInfo(@"*:*/hoge/plugin/自作.exe"); string stParentName = ofile.DirectoryName; MessageBox.Show(stParentName); このような感じでしょうか?

anene0000
質問者

お礼

ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。

anene0000
質問者

補足

日本語が悪くすみません。 >一個上のディレクトリを参照して、ディレクトリパスを取得する *:*/hoge/pluginを取得することです。 ありがとうございます。

その他の回答 (3)

  • FAY
  • ベストアンサー率49% (95/193)
回答No.4

んー・・・単純に String appPath = System.Reflection.Assembly.GetEntryAssembly().Location; appPath = appPath.Substring(0, appPath.LastIndexOf('\\')); とかじゃダメなのかしらん。

anene0000
質問者

お礼

ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。

anene0000
質問者

補足

皆様有難う御座います。ここで改めて感謝いたします。皆様の回答で検索ワードの候補が絞れて答えが出て来ました。ありがとうございます。 一番先に回答いただいた方にベストアンサーにさせて頂きますが、皆様の回答でベストアンサーでした・ありがとうございます。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

> 自作の.exeファイルの置かれているディレクトリ場所を > 取得するプログラムを作成したく思います・ カレントディレクトリと実行ファイルのあるディレクトリが必ずしも同一ではない。 という点には注意が必要です。 # EXEファイルのショートカットを作成して作業フォルダを指定すればそちらがカレントディレクトリになりますから。 その上で…… C:/MyApp/hoge/plugin/自作.exe という実行ファイルだった場合にどういうパスが欲しいのでしょうか? C:/MyApp/hoge/pluginが欲しいのならば、既にあるように実行ファイルのファイル名でSystem.IO.Path.GetDirectoryName()を実行すれば得られます。 C:/MyApp/hogeが欲しいのならば、実行ファイルのファイル名でSystem.IO.Path.GetDirectoryName()を実行し、得られたパス名で再度System.IO.Path.GetDirectoryName()を実行すれば得られます。 http://msdn.microsoft.com/ja-jp/library/system.io.path.getdirectoryname%28v=vs.100%29.aspx の「解説」に >返されたパスを GetDirectoryName メソッドに再度渡すと、返された文字列に対してこのメソッドを呼び出すたびに 1 フォルダー レベルの切り捨てが行われます。たとえば、パス "C:\Directory\SubDirectory\test.txt" を GetDirectoryName メソッドに渡すと、"C:\Directory\SubDirectory" が返されます。この文字列 "C:\Directory\SubDirectory" を GetDirectoryName に渡すと、"C:\Directory" になります。 とあります。 最初に明記した通り、実行ファイルのパスではなくカレントディレクトリが欲しいのであれば、 System.IO.Directory.GetCurrentDirectory()になります。 プログラム実行中にカレントディレクトリは変更される可能性がある。 という点にはご注意を。

anene0000
質問者

お礼

ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。

anene0000
質問者

補足

勉強になりました。ありがとうございます。 ディレクトリの取得について参考になりました・

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.2

どのプログラム視点で質問してるの? 自作.exe ていうか自身のディレクトリ パス? System.AppDomain.CurrentDomain.BaseDirectory

anene0000
質問者

お礼

ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。

anene0000
質問者

補足

アプリケーションの実行パスを取得する方法についておしえていただきありがとうございます。 >一個上のディレクトリを参照して、ディレクトリパスを取得するし、連結して、*:*/hoge/pluginまでのパスを取得することです。

関連するQ&A