2015-02-06 75 views
0

我有一个应用程序,其中有一个DLL(当然还有一些文件)。在安装过程中,该DLL将被注册,因此在某些上下文菜单中可以使用其他菜单。如果我卸载这个应用程序DLL文件仍然"locked",这意味着,我不能删除它。我必须重新启动电脑才能删除此文件。如何解锁/取消注册进程使用的dll?

所以我的问题是,是否有可能创建一个应用程序,它可以关闭打开的句柄,或注销dll,或任何需要做的,以便能够删除此dll而无需重新启动?

提前致谢!

+0

我的水晶球说,这是一个外壳扩展。当然,该DLL文件被锁定,因为它被加载到Explorer.exe中。杀毒资源管理器不是很合理,卸载程序通过使用PendingFileRenameOperations注册表项来完成。 – 2015-02-06 20:06:47

+1

打开“Process Explorer”,按Ctrl + D打开图像视图。然后搜索dll名称。杀死加载它的进程。 – 2015-02-06 20:12:14

+0

@Hans:更智能的外壳扩展安装程序/卸载程序/升级程序确实关闭并重新启动资源管理器 - 当然不是通过杀死它。我认为他们使用重新启动管理器。 (IIRC,TortoiseSVN就是一个例子) – 2015-02-07 00:35:35

回答

0

Windows Shell中使用
regsvr32 <yourfile>.dll登记文件
regsvr32 /u <yourfile>.dll的注销文件

+0

对不起,我忘了提,这是行不通的。我假设dll以其他方式注册。 – kampi 2015-02-06 19:34:01

+1

它是如何注册的?您可能有一些正在使用该DLL的进程。检查任务管理器您的程序或此DLL的任何其他可能的使用者是否正在运行。 – 2015-02-06 19:35:37

+0

explorer.exe使用该dll。我可以看到在进程浏览器。但我无法关闭explorer.exe。这就是为什么我只想关闭那个句柄或者是让DLL不能被删除的原因。 – kampi 2015-02-06 19:48:10