すべての Windows ドライバーを更新するにはどうすればよいですか?

すべての Windows ドライバーを更新するにはどうすればよいですか?

Windowsを強制的に再チェックする方法はありますか?全てデバイスをデータベース (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DevicePath) 内のドライバーと照合し、利用可能な最新のドライバーに更新しますか? これは、クローンされた HD イメージが初めて起動するときに sysprep が実行する処理に似ています。

たとえば、マザーボードに Windows をインストールすると、一部のデバイスは Windows CD のドライバーによって自動的に認識され、インストールされます。その他のデバイスは認識されないため、インストールされません。通常、すべてのドライバーを更新するには、MB CD を使用します。それには 2 つの方法があります。

  1. .exe ファイル: これを実行するだけで、(通常は) すべてのドライバー (認識されているかどうかに関係なく) が更新されます。

  2. .infファイル: デバイスが認識されない場合は、ドライバインストールウィザードがCD上のドライバを検索します。自動的にそうでない場合は、手動で更新する必要があります(デバイス マネージャー -> デバイスのプロパティ -> ... -> ドライバーの更新)もしMB CD 上のどのデバイスに更新されたドライバーがあるかがわかります。CD 上の .inf ファイルをチェックして、サポートされているものを見つけることもできますが、これは面倒な作業です。

通常、私は、後でクローンを作成する PC イメージを作成するときに DevicePath レジストリ キーを変更し、ドライバー パックを使用します (私は IT 部門で働いています)。残りの作業は sysprep が処理します。ただし、保存した HD イメージとは異なる方法で PC をインストールする場合 (したがって、sysprep を使用しない場合)、このプロセスは適用されません。

私がやりたいことは、

  1. Windows をインストールした後、ドライバー パックをフォルダーに解凍します。

  2. デバイスパスの変更

  3. Windows を強制的に新しいドライバーに更新します (_既に認識されているデバイス_ がここで最も重要なものであり、認識されていないデバイスでは問題はありません)。

やり方が分からない3番目のステップです。

答え1

使ってみるデベコン、Microsoft ユーティリティ。

DevCon ユーティリティは、デバイス マネージャーの代替として機能するコマンド ライン ユーティリティです。DevCon を使用すると、個々のデバイスまたはデバイス グループを有効化、無効化、再起動、更新、削除、および照会できます。

ドライバーをデフォルトの検索パスに解凍する限り、再スキャンを呼び出して、最初にインストールされなかったすべてのデバイスをキャプチャできます。

答え2

DPInst.exe を使用できます。

ここにガイドがあります:http://blogs.technet.com/b/svengruenitz/...

これは、すべてのドライバーをサイレント更新するために使用する DPInst.xml ファイルです。

<?xml version="1.0" ?>

<dpinst>

    <!-- Suppress the addition of entries to Programs and Features in 
    Control Panel.-->
    <suppressAddRemovePrograms/>

    <!-- install a driver package for a Plug and Play (PnP) function driver 
    only if the driver package matches a device that is configured in a 
    computer and the driver package is a better match for the device than 
    the driver package that is currently installed on the device. -->
    <scanHardware/>

    <!-- Suppress the display of user interface items that DPInst and 
    Windows generate. -->
    <quietInstall/>

    <!-- The following search and subDirectory elements direct
        DPInst to search all subdirectories (under the DPInst working
        directory) to locate driver packages. -->
    <search>
        <subDirectory>*</subDirectory>
    </search>
</dpinst>

また、コマンド プロンプトで /C フラグを使用して DPInst.exe を実行し、その動作を確認することもできます。

DPInstall のドキュメントは次の場所にあります:https://msdn.microsoft.com/...

答え3

記事ドライバーを直接インストールまたは更新するスクリプトMicrosoft カタログには、すべてのドライバーに対してこれを実行するための PowerShell スクリプトが含まれています。

この記事には、スクリプトの各部分についての詳しい説明が含まれています。以下に、わずかな変更のみを加えたスクリプトを再現します (テストは行っていません)。

#search and list all missing Drivers

$Session = New-Object -ComObject Microsoft.Update.Session           
$Searcher = $Session.CreateUpdateSearcher() 

$Searcher.ServiceID = '7971f918-a847-4430-9279-4a52d1efe18d'
$Searcher.SearchScope =  1 # MachineOnly
$Searcher.ServerSelection = 3 # Third Party

$Criteria = "IsInstalled=0 and Type='Driver' and ISHidden=0"
Write-Host('Searching Driver-Updates...') -Fore Green  
$SearchResult = $Searcher.Search($Criteria)          
$Updates = $SearchResult.Updates

#Show available Drivers

$Updates | select Title, DriverModel, DriverVerDate, Driverclass, DriverManufacturer | fl

#Download the Drivers from Microsoft

$UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { $UpdatesToDownload.Add($_) | out-null }
Write-Host('Downloading Drivers...')  -Fore Green  
$UpdateSession = New-Object -Com Microsoft.Update.Session
$Downloader = $UpdateSession.CreateUpdateDownloader()
$Downloader.Updates = $UpdatesToDownload
$Downloader.Download()

#Check if the Drivers are all downloaded and trigger the Installation

$UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { if($_.IsDownloaded) { $UpdatesToInstall.Add($_) | out-null } }

Write-Host('Installing Drivers...')  -Fore Green  
$Installer = $UpdateSession.CreateUpdateInstaller()
$Installer.Updates = $UpdatesToInstall
$InstallationResult = $Installer.Install()
if($InstallationResult.RebootRequired) {  
Write-Host('Reboot required! please reboot now..') -Fore Red  
} else { Write-Host('Done..') -Fore Green }

答え4

これを実行すると主張する (無料ではない) プログラムがいくつかあります。すぐに思いつくのは、次の 2 つです。

ドライバーロボット

ドライバー探偵

私はどちらも使ったことがないので、どれほど優れているかは保証できません。

関連情報