C# 删除包含thumbs.db的文件夹
有时我无法删除文件夹,因为它包含thumbs.db。我有很多文件夹(也包含图像),我需要将它们移动到其他位置并删除原始文件夹。但我得到了这个错误:无法删除该文件夹,因为“thumbs.db”正被另一个进程使用。移动和删除是在c#中进行的,现在它将跳过删除具有thumbs.db的文件夹,这将导致大量空文件夹。即使文件夹中有该文件,是否也有办法删除该文件夹?找出谁正在锁定该文件夹 您应该做的第一件事是找到哪个进程持有锁。你可以用它来找出答案 如果你不能杀死、控制或退出这个过程 您可以将文件标记为删除。它们将在下次启动时被删除。使用PInvoke并调用C# 删除包含thumbs.db的文件夹,c#,windows-7,C#,Windows 7,有时我无法删除文件夹,因为它包含thumbs.db。我有很多文件夹(也包含图像),我需要将它们移动到其他位置并删除原始文件夹。但我得到了这个错误:无法删除该文件夹,因为“thumbs.db”正被另一个进程使用。移动和删除是在c#中进行的,现在它将跳过删除具有thumbs.db的文件夹,这将导致大量空文件夹。即使文件夹中有该文件,是否也有办法删除该文件夹?找出谁正在锁定该文件夹 您应该做的第一件事是找到哪个进程持有锁。你可以用它来找出答案 如果你不能杀死、控制或退出这个过程 您可以将文件标记为删除
MoveFileEx
将null传入作为目标
您可以将其用于文件夹和文件。将文件夹标记为删除就足够了
此链接包含一些示例代码:
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool MoveFileEx(string lpExistingFileName, string lpNewFileName, int dwFlags);
public const int MOVEFILE_DELAY_UNTIL_REBOOT = 0x4;
MoveFileEx(filename, null, MOVEFILE_DELAY_UNTIL_REBOOT);
我将我的评论作为答案提交,因为这样更具可读性: 您可以关闭这些文件的创建: 在注册表编辑器中,转到HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Policys\Explorer 并将NoThumbnailCache条目的值设置为1 如果没有此条目,只需创建它(DWORD 32) 对于Win 7终极版/专业版: HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 禁用ThumbnailCache(也包括DWORD) 要删除所有现有文件,请创建包含以下内容的批处理文件:
cd c:\
del /s /q thumbs.db
并以管理员身份运行它,在我的情况下,最简单的解决方案有帮助,但我知道它不会每次都有帮助
- 取消选中“始终显示图标,从不显示缩略图”
- 取消选中“在缩略图上显示图标”
对我来说,现在我可以从网络驱动器中删除Thumbs.db,例如Z:\path\Thumbs.dbAFAIK,win7中的Thumbs.db文件存储在AppData中的某个位置,而不是包含图像的每个文件夹中,不是吗?您是否已经尝试以管理员身份运行您的程序?