コマンドプロンプト上でプログラムを実行した場合
プログラムのカレントディレクトリ(windows的には作業フォルダ)は,コマンドプロンプトでのカレントディレクトリになる.これは当たり前.
つまり,C:\Test にいる状態で
略 FILE *fp=fopen("test.txt","w"); fprintf(fp,"hello\n"); fclose(fp); 略
のようなプログラムを実行すると,C:\Test\test.txtが作成され,helloが書き込まれる.
エクスプローラからexeファイルをダブルクリックして起動した場合
この場合のカレントディレクトリは,エクスプローラでのカレントディレクトリ(というかexeファイルが置かれている場所)がプログラムのカレントディレクトリになる.
エクスプローラ上のexeファイルにファイルをドラッグ&ドロップして起動した場合
これに嵌った.調べたところ,このときカレントディレクトリは,なんとユーザのホームディレクトリ(XPならC:\Documents and Settings\ユーザ名,Vista以降ならC:\User\ユーザ名)にできるらしい.
ショートカットから起動した場合
この場合,ショートカットのプロパティの,「作業フォルダ」の項目で指定されたディレクトリがカレントディレクトリとなる.
調べた方法
次のようなWindowsプログラムを書いた.
#include <windows.h> #include <tchar.h> int _tmain(){ TCHAR buf[1024]; GetCurrentDirectory(buf,1024); MessageBox(NULL,buf,TEXT("CurrentDirectory"),MB_OK); return 0; }
これをコンパイルして実行すれば,メッセージボックスにカレントディレクトリが表示される.