Proxmox Windows VMs USB Geräte auswerfen deaktivieren

Windows VMs (10, 11, 2016, 2019, 2022), welche unter Proxmox virtualisiert werden, zeigen u.U. Hardware als „auswerfbar“ an, obwohl dies keine USB-Geräte sind. Mit einem kleinen Script kann dies während des Starts deaktiviert werden. Das ist nicht nur unschön, sondern teilweise auch unerwünscht.

Beispiel unter Server 2022:

Lösungsmöglichkeit

Mittels eines Scripts, welches beim Start der VM ausgeführt werden muss, können diese Einträge deaktiviert werden. Dazu muss zunächst der „Geräteinstanzpfad“ jedes Gerätes ermittelt werden. Hierfür den Gerätemanager öffnen, die Eigenschaften der gewünschten Komponente auswählen, Reiter „Details„, bei „Eigenschaft“ auf „Geräteinstanz“ wechseln, den Wert mit der rechten Mousetaste anwählen und im Kontextmenü „Kopieren“ auswählen:

Den kopierten Wert fügt man in eine TXT ein und wiederholt diese Schritte mit jedem Gerät, welches ausgeblendet werden soll. Die IDs der Geräteinstanzpfade sollten auch auf anderen Proxmox VMs gleich sein.

Für die beiden „VirtIO Serial Driver“ sowie den „Red Hat VirtIO SCSI pass-through controller“ erhält man dann diese Werte:

				
					PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\5&2490727A&0&4008F0

PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\5&2490727A&0&4808F0

PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00\5&1E249680&0&0820F0
				
			

Zum Deaktivieren wird folgender Befehl im Script benötigt:

				
					reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00\5&2490727A&0&9008F0" /v Capabilities /t REG_DWORD /d 2 /f
				
			

Der Wert hinter „HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum“ muss jeweils um die Werte aus den Geräteinstanzpfaden ergänzt werden.

Ein fertiges Script mit den drei Geräten sähe dann so aus:

				
					@echo off
: Hide VirtIO Serial Driver 1 eject
reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\5&2490727A&0&4008F0" /v Capabilities /t REG_DWORD /d 2 /f

: Hide VirtIO Serial Driver 2 eject
reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00\5&2490727A&0&4808F0" /v Capabilities /t REG_DWORD /d 2 /f

: Hide Red Hat VirtIO SCSI pass-through controller eject
reg.exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00\5&1E249680&0&0820F0" /v Capabilities /t REG_DWORD /d 2 /f
				
			

Einbindung und Start

Da die Einträge nicht persistent sind, muss das Script bei jedem Start mit Administratorrechten ausgeführt werden. Mittels eines simplen Tasks via die Aufgabenplanung und dem Trigger „Beim Systemstart“ ist das jedoch fix erledigt.

Scroll to Top