dポイントプレゼントキャンペーン実施中!

 自作の.exeファイルの置かれているディレクトリ場所を
 取得するプログラムを作成したく思います・

 自作exeファイルのディレクトリ構造は、「*:*/hoge/plugin/自作.exe」です。
 この時、一個上のディレクトリを参照して、ディレクトリパスを取得する
 方法などがありましたらおしえて頂きたく思います。

 ちなみに、以下のプログラムではできなかったのですが、参考までに載せました。

 よろしくお願いします。

 string stParentName = System.IO.Path.GetDirectoryName(@"*:*/hoge/plugin/自作.exe");
MessageBox.Show(stParentName);

A 回答 (4件)

こんばんは





>一個上のディレクトリを参照して、ディレクトリパスを取得する
*:*/hoge/pluginを取得することでしょうか?



上記の仮定ですと

System.IO.FileInfo ofile = new System.IO.FileInfo(@"*:*/hoge/plugin/自作.exe");
string stParentName = ofile.DirectoryName;
MessageBox.Show(stParentName);


このような感じでしょうか?

この回答への補足

日本語が悪くすみません。

>一個上のディレクトリを参照して、ディレクトリパスを取得する
*:*/hoge/pluginを取得することです。

ありがとうございます。

補足日時:2013/04/09 23:34
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/10 15:21

んー・・・単純に



String appPath = System.Reflection.Assembly.GetEntryAssembly().Location;
appPath = appPath.Substring(0, appPath.LastIndexOf('\\'));

とかじゃダメなのかしらん。

この回答への補足

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

補足日時:2013/04/10 15:23
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/10 15:20

> 自作の.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.i …
の「解説」に

>返されたパスを GetDirectoryName メソッドに再度渡すと、返された文字列に対してこのメソッドを呼び出すたびに 1 フォルダー レベルの切り捨てが行われます。たとえば、パス "C:\Directory\SubDirectory\test.txt" を GetDirectoryName メソッドに渡すと、"C:\Directory\SubDirectory" が返されます。この文字列 "C:\Directory\SubDirectory" を GetDirectoryName に渡すと、"C:\Directory" になります。

とあります。


最初に明記した通り、実行ファイルのパスではなくカレントディレクトリが欲しいのであれば、
System.IO.Directory.GetCurrentDirectory()になります。
プログラム実行中にカレントディレクトリは変更される可能性がある。
という点にはご注意を。

この回答への補足

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

補足日時:2013/04/10 15:21
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/10 15:20

どのプログラム視点で質問してるの?


自作.exe ていうか自身のディレクトリ パス?
System.AppDomain.CurrentDomain.BaseDirectory

この回答への補足

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

補足日時:2013/04/09 23:34
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/10 15:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!