Hyper-V zmiana domyślnej rozdzielczości połączenia do maszyny wirtualnej

Czy zdarzyło się Wam być poirytowanymi gdy podczas podłączania się do maszyny wirtualnej w usłudze Hyper-V ustawiliście sobie „Użyj wszystkich moich monitorów” oraz zaznaczyliście „Zapisz moje ustawienia na potrzeby przyszłych połączeń z tą maszyną wirtualną”? Pewnie nie, bo to całkiem spoko funkcja 🙂 Problem pojawia się jednak, gdy chcielibyście to ustawienie zmienić i… okazuje się, że nie jest to takie proste.

Monit o rozdzielczość konsoli Hyper-V
Ekran, gdzie lepiej przemyśleć swój wybór. Najlepiej dwa razy.

Okazuje się bowiem, że to ustawienie może być ciężkie do zmiany, aczkolwiek nie jest wcale niemożliwe – choć nie da się tego wyklikać w konsoli zarządzania Hyper-V, ani w ustawieniach wirtualnej maszyny. Dzieje się tak, ponieważ tak naprawdę jest to sesja RDP (dość specyficzna, ale jednak RDP), a taka sesja po prostu zapisuje swoje ustawienia w pliku konfiguracyjnym. Normalna konfiguracja sesji RDP jest przechowywana w pliku tekstowym z rozszerzeniem .rdp i wygląda mniej więcej tak:

Sesja RDP plik tekstowy
Zwykły plik konfiguracji sesji RDP to plik tekstowy, gdzie powiedzmy sobie szczerze – zmienne są mało czytelne

Z kolei konfiguracja sesji konsoli Hyper-V jest zapisana w „głębokim ukryciu” i jest plikiem w strukturze XML o rozszerzeniu .config. Jak znaleźć odpowiedni plik konfiguracyjny dla konkretnej maszyny? Należy zacząć od zdobycia unikalnego ID wirtualnej maszyny. Oczywiście bez PowerShella ani rusz – gdzie VMid znajdziemy po wykonaniu polecenia:

Get-VM -Name <nazwa_maszyny> | Select Name, VMId

Gdzie wynikiem polecenia będzie losowy ciąg znaków:

VMId konkretnej maszyny

Pliki konfiguracyjne połączeń konsoli Hyper-V są zapisywane domyślnie w następującym katalogu:

%appdata%\Microsoft\Windows\Hyper-V\Client\1.0

Wewnątrz katalogu odszukujemy plik:

vmconnect.rdp.<VMId>.config

Jak pisałem jest to plik XML, gdzie najbardziej interesujące nas teraz elementy są umieszczone w ustawieniach o następujących nazwach:

  • FullScreen
  • DesktopSize
  • UseAllMonitors

DesktopSize to poprostu domyślna rozdzielczość tzw. „sesji rozszerzonej” pozostałe to zmienne typu „boolean” więc przyjmują wartości True lub False. Jeśli ustawiliśmy te wartości przy pierwszym połączeniu to należy je zmienić do żądanych wartości.

Zmienne które z pewnością warto zweryfikować

Aby jedna z wirtualnych maszyn przestałą się upierdliwie panoszyć na obydwu monitorach, musiałem zmienić FullScreen na False, DesktopSize na 1920, 1080 oraz oczywiście UseAllMonitors także na False.

To była wersja dla wyjadaczy 😉 Prościej jest ten plik po prostu usunąć, ale… można jeszcze prościej – klikając na uruchomionej już maszynie w konsoli Hyper-V prawym klawiszem myszy i wybierając opcję „Edytuj ustawienia sesji”

Metoda na leniucha 🙂

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

Leave a Reply