通过CreateProcessW使用"mkdir"创建的目录名中的垃圾?

ary*_*ard 0 c c++ winapi

运行以下代码后,一切都按照我的意愿进行,除了文件夹显示:test2﷽﷽ꮫꮫꮫꮫووو

这里发生了什么?

            std::string arrString[3] = {" /C mkdir C:\\Users\\Andrew\\Desktop\\test1"," /C mkdir C:\\Users\\Andrew\\Desktop\\test2"," /C mkdir C:\\Users\\Andrew\\Desktop\\test3"};
            LPWSTR cmd =L"C:\\Windows\\System32\\cmd.exe";
            int i;


            for(i=0; i<3; i++)
            {
                STARTUPINFO info={sizeof(info)};
                PROCESS_INFORMATION processInfo;
                vector<wchar_t> cmdline(arrString[i].begin(), arrString[i].end());
                CreateProcessW(cmd, &cmdline[0], NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo);
                OutputDebugStringW(L"My output\nstring.");
            }
        }
Run Code Online (Sandbox Code Playgroud)

Die*_*lla 6

cmdline没有正确的ASCIIZ终止.您可以检查这是否只是添加结尾0(注意:未测试和快速黑客):

cmdline.push_back(0);
Run Code Online (Sandbox Code Playgroud)