如题, 如何解除文件占用,哪位高人有经验,求指教!
类似360的功能,当判断一个文件被占用时,我需要强制解除占用,目前这个需求主要是用在程序升级时,主程序退出了,有些DLL却没有正常关闭或被其它的应用给占用了,导致更新失败
正常的做法还是先看程序有哪些地方没有关闭资源,然后正确关闭
实在找不到,那就kill进程
关键点是我无法根据DLL找到所关联的进程,如果能找到就可以KILL进程实现,就像360清理垃圾时,若发出浏览器开启时,会弹出提示,是否关闭浏览器完成清理
不知道你是否有这方面的经验或指点一下,非常感谢!
@梦在旅途: 微软的开放下载的sysintenal中的procexp就可查看
https://technet.microsoft.com/en-us/sysinternals/bb842062
@2012: 谢谢,你的回答很有用,我也在网上找到了与你类似的答案,即可以使用:Handle ,通过handle "文件名" 能够查找出被引用的进程及进程EXE,这样就可以解决问题,谢谢!
说明程序退出的时候没有释放干净
你现在的想法是使用C#来释放文件,这种想法是不对的,因为实现不了
你需要在主程序中找到使用文件的代码的位置,然后在程序退出的时候释放这个文件,才是解决问题的方法
其实退出时有作释放,但有些DLL可能因为其它原因或被其它程序共享,造成未能及时退出或延迟退出,造成升级无法覆盖,我现在就是想找到解除占用,或者说明KILL掉被占用的进程
@梦在旅途: 如果实在找不到,那就试试process.kill吧