如何检测传递给create process的无效命令

时间:2011-05-31 00:31:46

标签: c++ winapi exception createprocess

我目前正在开发一个程序,用于启动用户指定的程序。 传入的是用户输入的wstring。我的问题是如何让它抛出异常或检查“passIn”是否为vaild。目前,如果用户输入“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;
}

我希望我的捕获能抓住它,但它没有。有什么我可以做的来检查它的vaild吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

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

  

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

     

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

所以,检查函数的返回值。