【发布时间】:2023-03-14 23:50:02
【问题描述】:
我无法使用以下代码删除 Windows 中的文件夹:
SHFILEOPSTRUCT shfo = {
NULL,
FO_DELETE,
path,
NULL,
FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION,
FALSE,
NULL,
NULL };
SHFileOperation(&shfo);
我需要使用SHFileOperation 而不是RemoveDirectory,因为我需要删除非空文件夹。
然而,即使path 中的值指向一个空的本地文件夹并完全控制所有人用户,该函数也会失败,被双空终止(根据documentation 的要求),没有系统,隐藏或读取只有属性...
不幸的是,该函数没有返回错误代码(如果成功则返回零,否则返回非零)并且调用GetLastError 返回ERROR_SUCCESS...
哪里出错了?
【问题讨论】:
-
它返回哪些错误值?这可能会给你一个想法(或者至少阻止任何试图回答这个问题的人不得不猜测 API 可能无法删除文件夹的所有可能方式)。
-
@Leo:不幸的是,如果成功,函数返回零,否则返回非零......
-
它被记录为返回的不仅仅是布尔成功:msdn.microsoft.com/en-us/library/bb762164%28VS.85%29.aspx
-
@Leo: 哦,我正在使用的 MSDN 离线版本(Visual Studio 2005 附带的那个)中没有提到这一点。
-
我过去也遇到过同样的事情。 :) 如果您遇到 API 问题,总是值得在线检查,不仅是为了更新的文档,而且对于社区内容 cmets,人们有时会在文档中添加常见问题或错误。
标签: winapi