カレントディレクトリはいつ移動? – プログラミング – Home

カレントディレクトリはいつ移動?
 
通知
すべてクリア

[解決済] カレントディレクトリはいつ移動?


toru
 toru
(@toru)
ゲスト
結合: 23年前
投稿: 37
Topic starter  

以下のようにカレントディレクトリを取得してファイルを読み込んでいますが
string dir = Directory.GetCurrentDirectory();

カレントディレクトリは移動していることがあると聞きました。
それは、Directory.SetCurrentDirectory()を呼ばなければいいだけの問題でしょうか。
それとも、意図せず移動しているものなのでしょうか。
移動しているなら、それはどんなときに移動するんでしょうか。


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

意図せず,というのはあり得るでしょう。
プログラマがカレントディレクトリが変更されることを知らずに変更するコードを呼んだ
場合などであり得ますから。

ただし,カレントディレクトリが勝手に移動することはないです。


返信引用
toru
 toru
(@toru)
ゲスト
結合: 23年前
投稿: 37
Topic starter  

>意図せず,というのはあり得るでしょう。
>プログラマがカレントディレクトリが変更されることを知らずに変更するコードを呼んだ
>場合などであり得ますから。
むぅ~、難しいですね。

現在、共通処理を作成していてその処理が呼ばれるまでに
カレントディレクトリが移動していることがあるかどうかで
迷ってます。

カレントディレクトリを移動したら、元に戻してとも
いえないですし、固定ディレクトリを設定か何かから
とってきた方が無難ですね。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

カレントディレクトリに頼らないようにするのがよいです。
代わりに,Assembly.GetEntryAssembly().Locationなどを使うようにします。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>現在、共通処理を作成していてその処理が呼ばれるまでに
>カレントディレクトリが移動していることがあるかどうかで
>迷ってます。
起動時に、何か変数に格納しておくのは出来ないのでしょうか?

でなければ、カレントディレクトリのように移動しないディレクトリにするしかないで
すね。
たとえば、YuOさんのようにEXEのあるディレクトリにするとか、Application Dataのデ
ィレクトリにするとか。


返信引用
toru
 toru
(@toru)
ゲスト
結合: 23年前
投稿: 37
Topic starter  

YuOさん、Blueさん、ありがとうございます。

実行ファイルのパスはGetEntryAssembly()で取れるんですね。
↓のように取得することにしました。
Assembly.GetEntryAssembly().CodeBase


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました