无法删除SHFileOperation的文件夹

时间:2010-11-14 23:30:22

标签: 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 ...

错误在哪里?

1 个答案:

答案 0 :(得分:11)

解决...

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