web-dev-qa-db-ja.com

Windows7でのドライバーのアンインストールと再インストールの自動化

Windows 7でドライバーのアンインストールと再インストールを自動化する必要があります。これを手動で行うプロセスは、次のとおりです。

  1. 開始
  2. [コンピューター]を右クリック> [管理]
  3. デバイスマネージャー>ネットワークアダプター
  4. インテル(R)デュアルバンドワイヤレス-AC7260を右クリック>アンインストール
  5. 削除しないでください。削除オプションをオフのままにします。アンインストールするには、[OK]をクリックします。
  6. [ネットワークアダプタ]を右クリック> [ハードウェアの変更をスキャン]

これらの手順を定期的に実行する必要があるため、自動化する方法を見つけたいと思います。

私はこれらの2つのコマンドラインツールが関連しているように見えることを発見しましたが、どちらも私が望んでいることを正確に実行していないようです。

wmic

# Outputs a list. I can parse this to find the index of the device.
wmic nic get name, index

wmic path win32_networkadapter where index=<from above> call disable
wmic path win32_networkadapter where index=<from above> call enable

これらのコマンドには、想定されていることをすべて実行したことを示唆する出力がありますが、ドライバーのアンインストールと再インストールと同じ効果はありません。

pnputil

pnputil -e

リストを出力します。デバイスマネージャーで使用されているのと同じ人間が読める形式の名前が含まれていないようです(上記のwmicで使用されていました)が、このデバイスがリストされているのがわかります。

Published name :            oem186.inf
Driver package provider :   Intel
Class :                     Network adapters
Driver date and version :   08/01/2013 16.1.3.1
Signer name :               Microsoft Windows Hardware Compatibility Publisher

しかし、これにはいくつか問題があります。 GUIデバイスマネージャーに移動し、[ドライバー]> [プロパティ]> [ドライバー]タブ> [ドライバーの詳細]を右クリックすると、次のファイルが一覧表示されます。

C:\windows\system32\DRIVERS\Netwfw02.dat
C:\windows\system32\DRIVERS\NETwsw02.sys
C:\windows\system32\drivers\vwifibus.sys

pnputilがそれを呼んだ名前はどれもありません。さらに、[詳細]タブ> [含まれるInfs]はそれをnetvwifibus.infと呼びます-これもpnputilがそれを呼ぶものではありません。

pnputilのもう1つの問題は、アンインストールコマンドがないように見えることです。それが持っているのはpnputil -dだけで、パッケージを削除するためのものです(パッケージとは何ですか?それはドライバーとどう違うのですか?それらは同じですか?)私の手動の指示は明示的にドライバーを削除することではなく、それをアンインストールします。間違ったものになってしまった場合に元に戻す簡単な方法がわからないため、この削除オプションを使用することさえ躊躇しています。

要約

wmicはドライバーを無効または有効にすることができますが、それらをアンインストールして再インストールしたいと思います。

pnputilはパッケージを追加および削除できます。 Word deleteは、簡単にバックアップまたはロールバックする方法がないように思われるので、私を怖がらせます。そのため、私は試していません。また、とにかくパッケージとは何ですか?ドライバーとの関係は…同じですか?

1
ArtOfWarfare

PnP、パッケージ、およびドライバー

お使いのデバイスはPnP(プラグアンドプレイ)デバイスです-これは、Windowsがこのデバイスに使用するドライバーを自動的に選択することを意味します。 見た目が1つ ドライバーの場合は、ローカルコンピューター上のドライバーストアです。ドライバストアには、ドライバパッケージが含まれています。 1つのデバイスに複数のパッケージが存在する可能性があり、1つのパッケージに複数のデバイスのドライバーを含めることができます。デバイスにドライバーが割り当てられていない場合、PnPマネージャーは互換性のあるドライバーを見つけます ランク付け 、最適なドライバーを選択し、このドライバーをインストールします。

ドライバーを手動でダウンロードしてインストールすると、そのコピーがパッケージとしてドライバーストアに配置されます。

ドライバーを手動でアンインストールし、デバイスマネージャーで削​​除オプションを選択すると、対応するパッケージもドライバーストアから削除されます。

wmic、pnputil

あなたが言及した正確なステップを自動化するために、両方のwmic disableおよびpnputil -dはあなたにとって良くありません。 pnputilはパッケージを追加/削除するだけで、PnPManagerがインストールするものを選択します。

ドライバをアンインストールしたい(ただし、そのパッケージを削除してPnPの再スキャンを強制しないでください)。

提案された解決策

Windowsデバイスコンソール(Devcon.exe) を使用してみます。その remove コマンドは、デバイスツリーからデバイスを削除し、パッケージをそのままにしておく必要があります-手順4と5と同じです。 rescan を使用するステップ6をトリガーできます。devconWindows Driver Kit にあります。

パブリックデバイスインストール関数 を使用してプログラムを作成することもできます。

2
Dorian