应用程序运行批处理文件,不能删除文件
本文关键字:删除 文件 不能 运行 批处理文件 应用程序 | 更新日期: 2023-09-27 18:03:04
我有一个c#应用程序,它创建一个批处理文件,然后运行它。这个批处理文件调用一个c++应用程序,它应该删除一个特定的文件。
当我运行c#应用程序:
- 创建批处理文件ok
- 可以运行批处理文件
- 删除文件失败
这是c++代码和文档:
// Attempt to delete the object from the device
hr = content->Delete(PORTABLE_DEVICE_DELETE_NO_RECURSION, // Deleting with no recursion
objectsToDelete.Get(), // Object(s) to delete
nullptr);
当我从命令行运行创建的批处理文件时,它可以工作,所以我不知道问题在哪里。
这不是一个完整的答案,但是所需的故障排除步骤不适合在评论中,因此作为一个答案(当更多信息来自OP时我会修改):
根据你发布的文档链接,如果第三个参数收到一个指针而不是nullptr
,那么在S_FALSE
返回的情况下,它将包含特定的错误信息。此信息与确定您正在经历的故障原因有关。
以下是文档中关于S_FALSE
含义的引用:
至少有一个对象无法删除。如果指定了ppResults参数,则包含每个对象的错误代码。
请将代码修改如下:
// Attempt to delete the object from the device
IPortableDevicePropVariantCollection *pResults;
hr = content->Delete(PORTABLE_DEVICE_DELETE_NO_RECURSION, // Deleting with no recursion
objectsToDelete.Get(), // Object(s) to delete
&pResults);
//TODO: Dump contents of pResults to log/cout/etc., in form objectsToDelete[i]=pResults[i]...
OP:请修改您的代码以捕获ppResults
并使用该结构中的信息修改您的问题。