0

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

这里发生了什么?

            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.");
            }
        }
4

2 回答 2

6

cmdline未正确 ASCIIZ 终止。您可以检查这是否是仅添加结尾 0 的原因(注意:未经测试和快速破解):

cmdline.push_back(0);
于 2012-06-08T19:38:40.600 回答
0

正如其他人所说,您没有将一个以空字符结尾的字符串传递给CreateProcessW(),这就是为什么您最终会在文件夹名称中包含额外的字符。在单独的注释中,您应该使用而不是使用CreateProcessW()to invoke 。然后你可以从to完全摆脱。mkdirCreateDirectoryW()arrStringstd::stringstd::wstringstd::vector

于 2012-06-08T23:03:14.977 回答