パスワードを忘れた? アカウント作成
249009 journal

EarOwlの日記: GetOpenFileName() でカレントディレクトリが変更される 2

日記 by EarOwl

http://srad.jp/security/comments.pl?sid=505365&cid=1814203

さくっとテストコードを書いてみた。

C:\test_pgm>cat WinMain.c
#include <tchar.h>
#include <windows.h>
 
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    TCHAR szCurDir[MAX_PATH];
    DWORD dwLen;
    OPENFILENAME ofn;
    TCHAR szFile[MAX_PATH] = _T("");
 
    dwLen = GetCurrentDirectory(MAX_PATH, szCurDir);
    if (dwLen > MAX_PATH) {
        return 0;
    }
 
    MessageBox(NULL, szCurDir, _T("Current Directory"), MB_OK);
 
    ZeroMemory(&ofn, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = NULL;
    ofn.lpstrFile = szFile;
    ofn.nMaxFile = MAX_PATH;
    GetOpenFileName(&ofn);
 
    dwLen = GetCurrentDirectory(MAX_PATH, szCurDir);
    if (dwLen > MAX_PATH) {
        return 0;
    }
 
    MessageBox(NULL, szCurDir, _T("Current Directory"), MB_OK);
 
    return 0;
}
 
C:\test_pgm>cl WinMain.c /link User32.lib Comdlg32.lib
 
C:\test_pgm>.\WinMain.exe

…本当だ。 GetOpenFileName() のダイアログで『開く』を選択するとカレントディレクトリが変更されてる。

以下、確認環境。

Microsoft Windows XP [Version 5.1.2600]

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

WinMain.c
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...