如何检测传递到创建过程中的无效命令

how to detect invalid commands being passed into create process

本文关键字:创建 过程中 命令 无效 何检测 检测      更新时间:2023-10-16

我目前正在开发一个程序,该程序启动用户指定的程序。传入的是用户输入的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;
}

我希望我的捕获物能抓住它,但它没有。我能做些什么来检查它是否有效吗?

谢谢!

引用函数的文档(这应该是您检查的第一件事):

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零。要获取扩展的错误信息,请调用GetLastError

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