?
WCHAR cmd[] = L"cmd.exe /c pause";
STARTUPINFOW si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
bool success = CreateProcessW(NULL, cmd, 0, 0, TRUE, CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT, NULL, NULL, &si, &pi);
si.dwFlags = STARTF_USESTDHANDLES;
bringt wohl irgendwie den entscheidenden unterschied.