いくつかのサイトで見られたのですが、
STARTUPINFO si = {sizeof (STARTUPINFO)};
は何をやっているんでしょうか?
STARTUPINFO si = {0};
や、
STARTUPINFO si;
memset(&si,0,sizeof (STARTUPINFO);
si.cb = sizeof(STARTUPINFO);
などなら分かるのですが。