我当前正在开发一个程序,该程序启动用户指定的程序。
传入的是用户输入的wstring。我的问题是如何使它引发异常或检查“passedIn”是否有效。当前,如果用户输入“notepad.exe”,它将正确启动它,但是如果他们输入诸如“asdf”之类的虚假信息或类似的东西,它仍会创建该过程。

try {
    wchar_t* commandLine = new wchar_t [CP_MAX_COMMANDLINE];
    wcsncpy_s(commandLine, CP_MAX_COMMANDLINE, passedIn.c_str(), passedIn.size() +1);
    CreateProcess(NULL,
        commandLine,
        NULL, NULL,
        false,CREATE_NEW_CONSOLE,NULL,
        NULL,
        &sinfo,
        &pi);

    delete [] commandLine;
}
catch (int e) {
    cout << "An exception occurred. Exception Nr. " << e << endl;
}

我希望我的渔获能捕获它,但事实并非如此。我有什么办法可以检查其是否有效?

谢谢!

最佳答案

引用function's documentation(应该是您检查的第一件事):

因此,请检查函数的返回值。

关于c++ - 如何检测传递到创建过程的无效命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6181855/

10-11 12:37