应用程序运行无法删除文件的批处理文件
Application runs batch file which can't delete file
我有一个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
并使用该结构中的信息修改您的问题。
相关文章:
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- 从之前添加的批处理文件中删除单词
- 无法从C++ Windows 服务执行批处理文件
- 如何将批处理文件的输出读取到C 中的字符串中
- cmake:生成批处理文件调用cl.exe
- 如何运行批处理文件和读取输出
- GetCommandLine():无法从批处理文件(GCC-Compiler)传递多行参数
- exe文件不被识别为内部或外部命令,可操作的程序或批处理文件在C++
- 您如何使用System()调用带有引号的参数的批处理文件
- 重命名批处理文件(删除名称中的一些符号)(python/matlab/shell)
- 对桌面进行了更改.ini使用批处理文件,但文件夹图标不会更改
- 如何将字符串转换为批处理文件中的整数
- 为什么我不能在Windows Server 2008中使用System()从服务启动批处理文件
- 通过批处理文件在多个文件上添加标头
- 替代System(),用于在程序中运行批处理文件
- 在批处理文件上进行C++fstream写入,然后结束,没有剩余的代码行
- 创建 Windows 服务和批处理文件
- c++ 使用创建过程执行批处理文件
- c++ 将字符写入批处理文件
- 批处理文件无法使用启动命令