カレントディレクトリが自動で変更に?

タグの編集
投稿者 さち  (学生) 投稿日時 2010/2/11 00:05:24
いつもいろいろと参考にさせてもらっています。

現在作成中のソフトで、自動で設定内容などを保存・読込する保存先フォルダとして、
カレントディレクトリ
【IO.Directory.GetCurrentDirectory()】
を使用してソフトがあるフォルダを確認し、その下の階層にデータを保存・読込させています。



ソフトを順調に作成していた際に問題がおきたのですが、
ソフトを起動し、すぐにこの設定を保存・読込する処理を行った場合は、しっかり動作します。

しかし、同じソフト内でユーザーが任意の場所に上記のデータとは別のデータを保存できるように
【SaveFileDialog】
を使用してファイルをデスクトップに保存する処理があるのですが、この処理を行ってから最初の設定内容などの保存・読込動作をさせるとエラーがでてしまいます。


【MessageBox.Show(IO.Directory.GetCurrentDirectory())】
を使用してステップ実行したところ、
【SaveFileDialog】
を使用する前は
C:\Documents and Settings\Owner\My Documents\・・・。
と希望通りに表示されるのに対し、

【SaveFileDialog】
を使用した後は
C:\Documents and Settings\Owner\デスクトップ

というようにカレントディレクトリが変更されていました。



【SaveFileDialog】を使用しても最初のディレクトリが希望通り表示するようにはできないものでしょうか?
また設定情報などを自動で保存させる際に、
【カレントディレクトリのIO.Directory.GetCurrentDirectory()】
を使用しないで設定をするものなのでしょうか?
投稿者 るしぇ  (社会人) 投稿日時 2010/2/11 00:40:14
[カレントディレクトリ]
http://e-words.jp/w/E382ABE383ACE383B3E38388E38387E382A3E383ACE382AFE38388E383AA.html

OSレベルで現在作業を行なっているディレクトリ。
【SaveFileDialog】を使うということは、
【保存ファイルを選択する】という「作業」を行なう事ですから、
当然、作業フォルダはダイアログで指定したフォルダに移動します。

「過去【ソフトを起動】という作業していたフォルダ」は、次の
作業を始めた時点でカレントディレクトリではありません。
当然のことですが。

アプリケーションが起動したパスについては
[Application.StartupPath プロパティ]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.startuppath.aspx
で提供されています。
投稿者 daive  (社会人) 投稿日時 2010/2/11 00:45:28
VB 2005 / 2008 だと思いますので。
Application プロパティ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application_properties(VS.80).aspx

この辺を、調べてみてください。
投稿者 さち  (社会人) 投稿日時 2010/2/11 00:45:43
るしぇさん
ありがとうございました。
カレントディレクトリそのものの意味を誤解していたようです。
おかげさまで問題が解決できました。