- PR -

exeが実行されているカレントディレクトリを取得したい

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-08-25 11:28
こんにちは。

サービスから実行されているせいでしょうか?C:\windows\systemにカレントディレクトリが設定されているのですが、これを自ディレクトリ(実行されているexeがある)として取得したいのですが、どのように取得するのでしょうか?System.Environmentにも見当たりませんでした(comandlineはexe名込みのフルパスを確認しましたが)。

System.IO.Directory.GetCurrentDirectory()

よろしくお願いします。
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2008-08-25 11:51
試していませんが、Assembly.Locationではいかがでしょう?
http://www.atmarkit.co.jp/fdotnet/dotnettips/016exepath/exepath.html
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-08-25 12:39
Assembly.LocationはURI形式で返してきたような気がする。
そのため、Path.GetDirectoryNameでディレクトリ名が取れなかったような記憶があります。
#ClickOnceだったからかもしれない

[code
Assembly.、GetExecutingAssembly.GetModules[0].FullyQualifiedName
[/code]
の方が良いかもしれない。

アプリケーションじゃないから、
コード:
Application.ExecutablePath


では無理かも。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-08-25 13:09
ありがとうございます。

Assemblyに書かないとだめなんでしょうか?System関数からは取得できないと言うことでしょうか?

初心者ですいません。
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2008-08-25 13:45
引用:

未記入さんの書き込み (2008-08-25 13:09) より:
Assemblyに書かないとだめなんでしょうか?System関数からは取得できないと言うことでしょうか?



Assemblyに特別な設定?をする必要はありません。こんな感じで取得できます。
コード:
String  location = System.Reflection.Assembly.GetEntryAssembly().Location;



いまさらですが、、、System.Windows.Formsの参照設定が許されるのであれば、以下の方がよいと思います。
コード:
String location = System.Windows.Forms.Application.StartupPath;

未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-08-26 17:00
ありがとうございます。

System.Environmentのcomandlineと同じようにexeも含んだパスでしたが、前後の¥マークが無く、こんな感じで出来ました!

pass = System.Reflection.Assembly.GetEntryAssembly().Location;
pass = pass.Replace("AppName.exe", "");
pass = pass.Replace("¥¥", "/");
(¥は大文字にしてます)

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)