Visual Studio 2008 では(VS 2005でも同じ) MFC の関数や、Win32API 関数で引数に文字列を渡すとき _T("文字列") と書かないといけないようです。 たしか、Visual C++ 6.0 のときはいらなかったよなーと思ってたので、ちょっと調べてみました。 ちなみに、_T("")をつけないと下記のようなコンパイルエラーとなったりします。 エラー1error C2664: 'ShellExecuteW' : 2 番目の引数を 'const char [5]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 詳しくは_T("")マクロだのL""マクロだのLPCTSTRだのの世界一詳しい解説で説明されてます。 要は、Visual Studio 2005 から文字列がマルチバイト(MBCS)からユニコード(wchar_t)に変わった