如何检测传递到创建过程中的无效命令
how to detect invalid commands being passed into create process
我目前正在开发一个程序,该程序启动用户指定的程序。传入的是用户输入的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
。
因此,请检查函数的返回值。
相关文章:
- 是否删除在对象构造过程中创建的对象
- 如何在鼠标挂钩过程中检测拖动
- clang 插件:在编译过程中修改 AST
- Adafruit 羽毛RFM69HCW在使用过程中会冻结,需要硬重置
- 线程过程中的线程同步问题
- MySQL 连接器/C++.尝试在此过程中停止连接到数据库
- 在qt创建器中调试时如何访问字符串变量的完整值?
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 在调用过程中删除 std::函数
- 动态矩阵特征分解过程中的误差
- cmake在构建过程中使用另一个工具检测标志
- 在模板参数推导过程中丢失限定符
- 升压过程中的管道缓冲区大小
- 如何在插入过程中更改插入的值
- 在PostgreSQL函数或过程中使用C++代码
- Vulkan:设备在缓冲区复制过程中丢失
- 如何判断我的过程中的哪个模块创建了哪个堆
- 在派生类的对象创建过程中使用shared_from_this()的两阶段构造
- 如何检测传递到创建过程中的无效命令
- Windows线程创建过程中的内存管理