ふとコードを見ていたら、WinMainのUnicode対応出来てないのでは?と感じて調べた。案の定、間違ってた。_tWinMainと引数を修正した。これで、もう間違ってないはず
int WINAPI _tWinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPWSTR lpszCmdLine, int nCmdShow) { int argc; LPWSTR *argv = NULL; _tsetlocale(LC_ALL, _T("")); // from MSDN システムの既定 argv = CommandLineToArgvW(GetCommandLineW(), &argc); if (argc < 4 || argv == NULL) { // エラーメッセージ usage(); } if (_tcsicmp(_T("copy"), argv[ARGC_CMD]) == 0 || _tcsicmp(_T("move"), argv[ARGC_CMD]) == 0) { // COPY | MOVE teracopy(argc, argv); } else { usage(); // エラー } LocalFree(argv); return 0; }