今天遇到一個非常奇怪的問題,有臺裝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的簽名機制有沖突,所以導致安裝失敗,真是坑爹!
幸好這電腦還有傳統的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的簽名機制有沖突,所以導致安裝失敗,真是坑爹!