解决无法安全拔除USB设备

已发表 15 七月 06 08:35 上午 | junxiulee 


症状描述:


当我们要卸载当前系统中插入的USB设备时,偶尔会遇到如下图所示的报警信息:




另外,还可以会遇到其它的报警信息:

Cannot delete file: Access is denied
There has been a sharing violation.
The source or destination file may be in use.
The file is in use by another program or user.
Make sure the disk is not full or write-protected and that the file is not currently in use.


原因分析:

要卸载的移动设备上的文件仍然被某个进程打开的hanle锁定。

handle就像一把锁,进程对特定文件进行读/写操作时,系统先给这个文件上一把锁。这把锁有的是单个进程独享的,有些是可以大家分享的。如果是独享式的handle,那么只有该进程释放对文件的handle以后,其它进程才能开始对该文件进行操作。

解决方案:

使用最新版的Process Explorer ,打开该程序, Ctrl+F打开Find Handle or Dll对话框, 输入移动硬盘在系统中分配到的盘符,即可查出当前占用该分区的进程。



找到了问题的原因,下面只要在该handle上,单击鼠标右键,选择"close handle"即可。现在移动硬盘就可以安全卸载移动硬盘了。




除此之外,我们还可以使用一款第三方的专门处理handle占用的工具Unlocker

安装后,在移动硬盘盘符上右击,选择该软件在explorer shell上安装的扩展菜单"Unlocker,即可看到还有哪些进程在移动硬盘上打开了handle.



此时,单击Unlock按钮,即可关闭该handle。

写在最后:

起初,我使用了当前系统里安装的process explorer 10.11版,find handle时搜索移动硬盘分区"k:","j:",搜索不出任何结果。奇怪,我随之使用sysinternals上的命令行查handle的工具handle.exe

http://www.sysinternals.com/utilities/handle.html

结果如下:

handle -p explorer.exe "9FC: File (RWD) K:\"


看来命令行还是比较准的

那么,为什么在procexp中不能搜索到移动硬盘的盘符呢?

起初,我以为是10.11版本低,不能正确识别的问题。后来发现,无论是哪个版本,如果插入移动硬盘时,procexp是开着的,分区就会被识别为
"\Device\Harddisk Volume6\..." 这样的格式。如果是在移动硬盘插入以后启动的procexp,程序就可以把移动硬盘在系统中拿到的盘符正确识别出来了。

归档在:

评论

# dift.wu said on 七月 26, 2006 9:18:
我的T43的光驱也是USB的但最近出现了一个错误,在也无法使用了,错误信息是:Windows cannot start this hardware device because its configuration information (in the registry) is incomplete or damaged. (Code 19)

请帮忙分析下原因。
# lwfwind said on 十月 23, 2006 20:54:
当我们要卸载当前系统中插入的USB设备时,偶尔会遇到如下图所示的报警信息:
禁止匿名发表评论