通过资源管理器删除打开的文件

时间:2014-07-11 08:37:27

标签: shell dll nsis

我创建了一个正常工作的shell扩展(DLL),但是当使用卸载程序删除未删除DLL的程序时,它是由Windows资源管理器打开的。我必须使用TaskManager首先关闭Explorer.exe然后再次运行它并删除manualy该文件(Shell Extenstion Dll), 现在我的问题是,如何删除卸载程序脚本中的Shell Extestion文件?我使用Nullsoft Scriptable Install System 2.46(NSIS)来创建安装程序。

1 个答案:

答案 0 :(得分:1)

在Windows上卸载shell扩展没有好办法。

您最好的选择是尝试删除.dll并重新启动重启:Delete /RebootOK "$InstDir\MyExt.dll"

另一种方法是尝试将.dll移动到%temp%。这不会卸载扩展名,但它会允许您删除其他所有内容,并且下次用户登录时不会加载扩展名。(这只有在与%temp%相同的卷上时才会起作用吗?)

请务必记住,使用“打开/保存”常用对话框或在内部使用SHGetFileInfo()IShellFolderIShellItem的任何应用程序都可能已加载您的扩展程序,因此只是杀死资源管理器可能不会够了。