winapi - 无法使用SHFileOperation删除文件夹

标签 winapi

我无法使用以下代码在Windows中删除文件夹:

SHFILEOPSTRUCT shfo = {
    NULL,
    FO_DELETE,
    path,
    NULL,
    FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION,
    FALSE,
    NULL,
    NULL };

SHFileOperation(&shfo);

我需要使用SHFileOperation而不是RemoveDirectory,因为我需要删除非空文件夹。

但是,即使path中的值指向一个完全由Everyone用户控制的空本地文件夹,被双空终止(按documentation的请求),没有系统,隐藏或只读属性,该函数也会失败。

不幸的是,该函数未返回错误代码(如果成功则返回零,否则返回非零),并且调用GetLastError返回ERROR_SUCCESS ...

错误在哪里?

最佳答案

解决了...path变量实际上不是双空终止的,因为我使用的wcscpy_s在空字符后填充了字符串缓冲区(我以前用零填充)with the 0xFD value

关于winapi - 无法使用SHFileOperation删除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180351/

相关文章:

cygwin下调用winapi编译链接静态库

winapi - 如何在没有监控线程或进程的情况下使用 C++ 快速获取目录是否已更改?

c++ - 创建拖放事件 C++

winapi - 默认按钮大小?

c++ - 如何将数据传递给不同的线程

c++ - WinAPI:在 WM_PAINT 中省略 BeginPaint 和 EndPaint 会导致 100% CPU 使用率

c++ - utf-8 与 utf-16 之间的问题

windows - 如何查询正在运行的进程的登录类型?

delphi - 如何检查我的应用程序从磁盘写入和读取了多少字节?

user-interface - 有 Win32API 的替代 API 吗?