2017-02-27 68 views
-1

我在Windows 7,8,8.1和10機器上使用USB設備。此設備(最終)在所有這些配置上由Windows Update識別,併爲設備安裝默認驅動程序。我想強制此設備使用我指定的驅動程序,即而不是 Windows將選擇的默認驅動程序。我想以編程方式執行此操作,最好使用Windows本機組件(如批處理或PowerShell),或者足夠小以便它們可以包含在可部署的安裝軟件包中。以編程方式爲USB設備安裝「不兼容」的驅動程序

的目標是找到一些編程的方式來複制下組的步驟調用的功能:

打開設備管理器- >右鍵單擊所需的設備上更新- >更新驅動程序軟件...- >瀏覽計算機以查找驅動程序軟件- >讓我選擇從列表中的驅動程序在我的電腦- >取消選擇「顯示兼容硬件」複選框- >選擇製造商和型號。

據我所知,這有效地繞過了設備先前或默認應用的* .INF文件中指定的默認硬件ID。

我已經嘗試使用devcon.exe執行此操作(嘗試「安裝」和「更新」功能),並發現每次都會失敗,無論我如何一般指定設備的硬件ID(不允許它影響其他設備,當然)。我可以列出設備的驅動程序文件,但不能更改它們。

我還研究PnPUtil,但是這不會出現成適合於施加特定駕駛員進行特定裝置的應用。

一直在仔細研究PowerShell的文檔,並再次列出設備及其所有屬性(包括它的驅動程序和驅動程序文件),但我還沒有找到一種方法來強制並以編程方式安裝驅動程序我選擇的

關於如何實現上述目標的任何想法?非常感謝提前。

+0

什麼是downvote? –

回答

1

USB主機(Windows)根據設備在詢問時返回的描述符(某些情況下驅動程序是按每個接口加載的,在這種情況下需要讀取接口描述符)選擇合適的驅動程序。設備描述符可以包含以下信息:

bcdUSB 
bDeviceClass 
bDeviceSubClass 
bDeviceProtocol 
bMaxPacketSize0 
idVendor 
idProduct 
bcdDevice 
iManufacturer 
iProduct 
iSerialNumber 
bNumConfigurations 

通用(默認)類驅動程序通常選擇基於形式bDeviceClass,bDeviceSubclass也許還有一些其他細節。如果設備供應商希望他們的驅動程序覆蓋默認驅動程序,他們會爲idVendor和idProduct實施一個.inf文件,並將其指向他們的驅動程序。如果你想覆蓋默認的驅動程序,那你應該這樣做。我會說,即使你想在代碼中做到這一點,你也需要生成這個inf文件。 This是非常好的信息來源,即使您不是自己實施驅動程序。

+0

如果我試圖使用預先存在的INF文件怎麼辦?比如說,與其他第三方軟件一起安裝的軟件? –

+0

這取決於.inf文件所說的內容。如果是用於你正在使用的硬件的話,那麼它就會起作用,我假設你不需要在這裏提問。重點是inf文件必須與硬件匹配,無論是專門的還是在類/接口級別。 – diidu

0

如果您的設備不是即插即用的,並且它可以在操作期間插入機器,您可以嘗試使用DevCon並執行其InstallUpdate功能。

+0

謝謝,但我在原始問題中提到我嘗試過DevCon,並不斷失敗。我懷疑這是因爲所需的INF文件不包含我的設備擁有的硬件ID。 –

+0

也許我沒有仔細閱讀。您是否試圖根據您的硬件在INF文件中編輯VID/PID? – user2956477

+0

我沒有嘗試編輯INF中的VID/PID。這可能是一個可行的選擇,但它是我希望避免的,考慮到我可以使用Windows的設備管理器來強制設備使用不一定與我的設備的硬件ID相對應的INF。 –

相關問題