c# - 如何删除 Thumbs.db(它正在被另一个进程使用)

标签 c# .net

我有一个简单的控制台应用程序,我正在尝试删除一个文件夹:

Directory.Delete(folder,true);

我得到了烦人的 Thumbs.db 的异常

The process cannot access the file 'Thumbs.db' because it is being used by another process.

我无法更改注册表以避免缩略图在文件夹中处理

我在这里有什么选择可以删除包含所有内容的文件夹?

谢谢

最佳答案

您可以使用 Unlocker 找出哪个进程正在阻止它.如果您无法终止该进程,您可以使用 MoveFileEx 将此文件或文件夹标记为在下次启动后立即删除。 .

[DllImport("kernel32.dll")]
public static extern bool MoveFileEx(string lpExistingFileName, string lpNewFileName, int dwFlags);

public const int MOVEFILE_DELAY_UNTIL_REBOOT = 0x4;

//Usage:
MoveFileEx(fileName, null, MOVEFILE_DELAY_UNTIL_REBOOT);


如果您想完全禁用“Thumbs.db”-Files 的创建,您可以在注册表中将其关闭。打开注册表编辑器,导航到 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 并将 NoThumbnailCache 的值设置为 1。如果此条目不存在,您可以简单地创建它 (DWORD 32)。

对于 Win7 Professional/Ultimate,条目的路径是 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,它的名称是 DisableThumbnailCache

关于c# - 如何删除 Thumbs.db(它正在被另一个进程使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098180/

相关文章:

c# - 如何向超过 15000 个收件人发送邮件?

c# - 如何将 c 合并到 c# 中(特别是 lex)

c# - 一个奇怪的 Visual Studio 2010 调试器案例(它不能命中断点)

c# - 检查数组的所有值是否不同

c# - 使标签大小适合绘制的文本

c# - 在 Windows 应用程序中使用 C# 在 Excel 中使用不同颜色突出显示数据

c# - 在发布期间包含文件

C# HTTP 请求适用于控制台应用程序,但不适用于 WinForms

.net - 是否有 .NET 库或 API 来与/编辑 IIS 元数据库进行交互?

.net - 从 .NET 中的文本中提取关键字