- ベストアンサー
C#でカレントディレクトリを取得する方法
- C#でカレントディレクトリの取得方法について自作の.exeファイルの置かれているディレクトリ場所を取得するプログラムを作成する方法を教えてください。
- 自作exeファイルのディレクトリ構造は、「*:*/hoge/plugin/自作.exe」です。この時、一個上のディレクトリを参照して、ディレクトリパスを取得する方法などがありますか?
- また、以下のプログラムではできなかったのですが、参考までに載せました。string stParentName = System.IO.Path.GetDirectoryName(@"*:*/hoge/plugin/自作.exe"); MessageBox.Show(stParentName);
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは >一個上のディレクトリを参照して、ディレクトリパスを取得する *:*/hoge/pluginを取得することでしょうか? 上記の仮定ですと System.IO.FileInfo ofile = new System.IO.FileInfo(@"*:*/hoge/plugin/自作.exe"); string stParentName = ofile.DirectoryName; MessageBox.Show(stParentName); このような感じでしょうか?
その他の回答 (3)
- FAY
- ベストアンサー率49% (95/193)
んー・・・単純に String appPath = System.Reflection.Assembly.GetEntryAssembly().Location; appPath = appPath.Substring(0, appPath.LastIndexOf('\\')); とかじゃダメなのかしらん。
お礼
ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。
補足
皆様有難う御座います。ここで改めて感謝いたします。皆様の回答で検索ワードの候補が絞れて答えが出て来ました。ありがとうございます。 一番先に回答いただいた方にベストアンサーにさせて頂きますが、皆様の回答でベストアンサーでした・ありがとうございます。
- Wr5
- ベストアンサー率53% (2173/4061)
> 自作の.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()になります。 プログラム実行中にカレントディレクトリは変更される可能性がある。 という点にはご注意を。
お礼
ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。
補足
勉強になりました。ありがとうございます。 ディレクトリの取得について参考になりました・
- x-1919
- ベストアンサー率52% (91/173)
どのプログラム視点で質問してるの? 自作.exe ていうか自身のディレクトリ パス? System.AppDomain.CurrentDomain.BaseDirectory
お礼
ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。
補足
アプリケーションの実行パスを取得する方法についておしえていただきありがとうございます。 >一個上のディレクトリを参照して、ディレクトリパスを取得するし、連結して、*:*/hoge/pluginまでのパスを取得することです。
お礼
ありがとうございます。おっしゃっていただいた情報を元に検索して、 System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);が目指したものだとわかりました。ありがとうございます。
補足
日本語が悪くすみません。 >一個上のディレクトリを参照して、ディレクトリパスを取得する *:*/hoge/pluginを取得することです。 ありがとうございます。