应用程序运行批处理文件,无法删除文件

时间:2014-05-13 17:37:00

标签: c# c++ file batch-file visual-studio-2013

我有一个C#应用程序,它创建一个批处理文件,然后运行它。此批处理文件调用C ++应用程序,该应用程序应删除某个文件。

当我运行C#app时:

  • 创建批处理文件是好的
  • 运行批处理文件是好的
  • 删除文件失败。

这是C ++代码和documentation

// 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);

当我从命令行运行创建的批处理文件时,它可以工作,所以我不知道问题出在哪里。

1 个答案:

答案 0 :(得分:0)

这不是一个完整的答案,但是需要的故障排除步骤不适合评论,因此作为一个答案(我会在更多信息来自OP时进行修改)&lt; < / EM>:

根据您发布的documentation链接,如果第3个参数收到指针而不是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并使用该结构中的信息修改您的问题。