amp@java

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  99 随笔 :: 0 文章 :: 228 评论 :: 0 Trackbacks
今天遇到一个非常奇怪的问题,有台装XP的电脑,插上USB键盘没反应,还以为是键盘坏了,又找来两个不同型号的键盘,依然不行,又以为是USB接口坏了,结果在电脑启动的时候又可以按F2进入BIOS,这样就只有一个原因,Windows的驱动没装上了。
幸好这电脑还有传统的PS/2口,而且插上就能识别,否则连Windows都进不去,因为按Ctrl+Alt+Del没反应。
进去之后提示安装USB键盘驱动,到最后一步提示安装失败,原因是拒绝访问。
上网搜了一下,安装驱动拒绝访问的其中一个原因是注册表有个键的权限设置有问题,改过来即可,但是我打开注册表,连那个键都没找到,不是这个原因。
不过从这个解决方案中也知道了驱动安装的日志是在Windows目录下的setupapi.log文件里面,于是打开那个文件,发现每次安装都有两个拒绝访问的错误,但并没有说是注册表拒绝访问,在拒绝访问之前,还提到一个叫MlCoInst.dll的文件没有签名。
上网搜MlCoInst.dll,没有找到任何结果,在System32目录下找到它,看属性,果然没有签名,是个三无文件,不知道为什么每次安装驱动都要调用它。
日志里面还提到了“共同安装程序”,似乎和CoInst有点关联,于是又查了一下,原来安装驱动的时候可以通过调用“共同安装程序”来实现某些目的,例如修改驱动程序的签名状态,欺骗操作系统,这样就可以只安装一次驱动即可,不用每次插入都安装一次。
于是尝试把MlCoInst.dll删除,提示删除失败。
在注册表里面搜索MlCoInst.dll,把所有找到的键值都删除,再次插拔键盘,顺利安装完毕,删除MlCoInst.dll,也成功了,果然是它的问题。

这个应该是某个USB设备的驱动引进来的,而且修改了usb.inf,每次安装任何USB设备都要调用它,但它可能与Windows的签名机制有冲突,所以导致安装失败,真是坑爹!
posted on 2015-04-02 17:04 amp@java 阅读(3502) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: