无法删除SHFileOperation的文件夹

lor*_*ova 6 winapi

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

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

SHFileOperation(&shfo);
Run Code Online (Sandbox Code Playgroud)

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

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

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

错误在哪里?

lor*_*ova 12

解决了...

path变量实际上并没有双重终止,因为我使用wcscpy_s了填充字符串缓冲区(我以前填充了零) null char之后的0xFD值 ...

  • 哈哈,有同样的问题,尽管我以为我是双无效终止..我不是 (2认同)