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.