急:删除不掉库文件的问题!
目前在写一个卸载程序。遇到一个很诡异的问题。
卸载程序的目的是把安装文件夹及文件夹下的所有文件删除。
比如安装目录为“c://setup”,目标就是要把setup文件夹跟里面的文件全部删掉。
由于删除exe程序也在安装目录下,所以使用的方法是:安装目录下放两个exe程序,其中一个命名为Uninstall.exe,另外一个命名为real.exe。实现的方法是当点击Uninstall.exe时,把real.exe拷贝到临时文件夹下【C:\Users\用户名\AppData\Local\Temp】,然后调用临时文件夹下的real.exe,把安装目录“c://setup”及其文件全部删掉。
怪就怪在这里,安装文件夹中有一个程序所需的系统库,名为“api-ms-win-core-synch-l1-2-0.dll”,在我运行临时文件夹下的real.exe删除文件时,这个库显示被real.exe占用,无法删除。我无法理解,因为我运行的是临时文件夹下的real.exe,跟安装目录已经没有什么瓜葛了,为何real.exe还会占用这个库?????【ps:安装文件夹下的其它库都能删除,安装目录下的real.exe和Uninstall.exe也能删除】
PS:我怀疑是我的配置项配的不够正确:
我的程序的win32程序,duilib做界面。卸载程序也做了静态编译。比如在MFC的使用中选择了“在静态库中使用mfc”,多线程中选择了“MT”,并在附加依赖项中包含了”Kernel32.lib;User32.lib;Gdi32.lib;OleAut32.lib;Ole32.lib;Shell32.lib;Shlwapi.lib;Normaliz.lib;Advapi32.lib;ws2_32.lib;imm32.lib;”等所需的静态库库。
请求各位不吝赐教!!!