Installation von Treibern über eine Programmiersprache

Installation von Treibern über eine Programmiersprache

Ich habe einen Treiber namens X, der eine Hardwarekomponente A verwaltet. Ich möchte dieses Laufwerk entfernen und durch ein Laufwerk namens Y ersetzen, das ebenfalls die Komponente A verwaltet.

Bisher habe ich .NET Framework 6.0, die Programmiersprache C# und PNPUtil.exe verwendet, um den Treiber zu installieren. Ich glaube jedoch, dass meine Methode falsch ist, da ich lediglich Folgendes getan habe:

ProcessStartInfo psi = new ProcessStartInfo
                {
                    FileName = "PnPUtil.exe",
                    Arguments = $"-i -a \"{driverFile}\"",
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                };

Dies ist nur die Installation und das Gerät in der Konsole zeigt an, dass es installiert ist, aber wenn ich in die Geräteverwaltung gehe und das Gerät nach Treiber suche, finde ich meinen Treiber Y nicht. Ich suche nach einer Antwort, die dies demonstriert oder auf ein Tutorial verweist, in dem beschrieben wird, wie dies funktioniert und ob PowerShell dies ebenfalls replizieren kann. Mein Betriebssystem ist Windows 11.

Antwort1

Sie installieren einen Treiber, aber ob dieser für ein Gerät verwendet wird, hängt von der Treiberdefinition in seiner .infDatei ab.

Beachten Sie, dass Windows bei der Installation eines älteren Treibers diesen möglicherweise automatisch auf eine neuere Version aktualisiert. Informationen zum Blockieren dieses Updates finden Sie unter diese Antwort.

Der Windows-Befehl zum Installieren von Treibern lautet PnPUtil, mit dem folgenden Befehl:

pnputil -i -a <driverinf>

Wenn die zu installierende INF-Datei einen DefaultInstallAbschnitt hat, kann sie auch mit diesem Befehl installiert werden:

rundll32 advpack.dll,LaunchINFSection <PathTo>\name.inf,,1

Wenn ein DefaultInstallAbschnitt nicht vorhanden ist, müssen Sie stattdessen mit dem folgenden Befehl herausfinden, welcher Installationsabschnitt aufgerufen werden soll:

rundll32 advpack.dll,LaunchINFSection <PathTo>\name.inf,<InstallSection>,1

Quellen:

verwandte Informationen