我有一些文件夹,InstallAware 已将其用作构建某些软件安装程序的输出目录。InstallAware 将系统 dll 复制到输出目录中,以便与安装程序一起打包,因此您会得到一些目录,如下所示:
\Release\Single\data\OFFLINE\7F8A918D\BCE51B05\twinapi.appcore.dll
和
\Release\Single\data\OFFLINE\8A864189\BCE51B05\ntasn1.dll
现在的问题是这些输出目录完全不可能删除。操作系统似乎认为这些文件被复制了从System32 是实际的系统 dll,永远不应删除。
一般来说,我无法删除这些 dll 的原因是它们正在被dwm.exe
或所使用Desktop Window Manager
。据称使用这些 dll 文件的其他进程:Windows 资源管理器(虽然结束它并尝试删除没有效果)、wlanext.exe、WUDFHost.exe、csrss.exe...
本质上,这些 dll 在其实际位置(通常是 System32)的使用方式,操作系统认为这些文件正在以相同的方式使用。我还应该提到,有 15-20 个这样的文件夹,所有这些 DLL 有 15-20 个副本,Windows 认为它们中的每一个都被上述系统进程同时使用。
这些文件位于桌面上,在 InstallAware 用于打包文件以制作安装程序的临时输出文件夹中。
您能想到的任何标准方法都不起作用。启动到安全模式不起作用,并且dwm.exe
无法有效终止(其他系统进程实际上也无法有效终止)以删除这些文件。
这是一个思想实验,用来复制(精神上,不要尝试)这里发生的事情。
如果您进入 C:\Windows\System32,并开始尝试删除操作系统运行所需的 DLL,您将收到类似“文件正在使用 - 无法完成该操作,因为文件在...中打开”的错误,其中'...' 可能是一些系统进程,如 dwm.exe、explorer.exe 等。
但是,这些 DLL 并不位于 System32 中,而是有 20 个副本但是,如果您想删除这 20 个副本,您将收到与试图删除 System32 中的真实副本相同的消息。