我正在尝试创建一个强大的递归文件夹删除功能.
使用普通目录工作得很好.
当我创建一个"硬核"目录时会出现问题,例如:
C:\ test\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\x\...\x\X\X
这个长度约为25000(小于MSDN限制:32,767).基本上我递归地创建了这个目录,直到CreatDirectory函数失败.
现在,最奇怪的是,我的函数能够删除2个目录,然后FindFirstFile失败并显示0x5:
\\?\C:\test\x\ ... \x\x\x\*.* < no error
\\?\C:\test\x\ ... \x\x\*.* < no error
\\?\C:\test\x\ ... \x\*.* < access denied
Run Code Online (Sandbox Code Playgroud)
(我可以重新运行它,应用程序正在慢慢地咀嚼文件夹,2乘2,可能直到路径长度变小)
我正在运行FindFirstFile来检查文件夹是否为空.
编辑:重要说明:如果我慢慢地运行程序...那么什么都不会失败.
您可能正在经历类似病毒扫描程序,索引器或持有目录句柄的连续备份解决方案.例如,如果索引服务配置为索引该文件夹.
尝试删除除了使用FILE_SHARE_DELETE标志打开的文件夹或文件将导致ACCESS_DENIED.
要确认这一点,请使用Process Monitor查看与您的路径匹配的任何内容的打开和关闭.
(当然也确认你叫FindClose).
| 归档时间: |
|
| 查看次数: |
1898 次 |
| 最近记录: |