Jak zmienić rozdzielczość maszyny Windows Amazon EC2?

9

(Zastanawiałem się nad opublikowaniem tego tutaj, ServerFault i StackOverFlow. Rozstrzygnąłem za to. Mam nadzieję, że jest to właściwe miejsce).

Nasz pakiet testowy interfejsu użytkownika uruchamiamy za pomocą Selenium Grid 2 na maszynie Amazon EC2 Windows (uruchamianej przy użyciu interfejsów API CloudFormation firmy Amazon). Moje pytanie brzmi: jak zmienić rozdzielczość tego komputera?

Jeśli zdalnie się do niego włączę, mogę określić rozdzielczość za pomocą Pulpitu zdalnego. Ale oczywiście nie zmienia to na stałe rozdzielczości. Kiedy uruchamiamy nasze testy, rozdzielczość jest tak mała, że ​​przeglądarka usuwa elementy razem i powoduje, że testy kończą się niepowodzeniem.

Jakieś pomysły? Czy jest coś, co mogę umieścić w przepisie CloudFormation? Czy mogę coś zrobić z obrazem przed utworzeniem AMI?

Zrzut ekranu Menedżera urządzeń

Dzięki.

Joel
źródło
1
Ciekawy. Wyobrażam sobie, że musi to być standardowa instancja, więc do instancji nie są przypisane żadne karty graficzne CUDA. Pracujesz więc ze standardową wirtualną kartą graficzną. Jak to wygląda w menedżerze urządzeń? Czy możesz opublikować zrzut ekranu? Możesz być w stanie wymusić to wyżej, rdp-ing na konsolę:mstsc.exe /console
Paul
@Paul, dodałem zrzut ekranu. Jest to standardowa instancja. Windows Server R2. Dzięki.
Joel
@Joel, czy kiedykolwiek to rozwiązałeś? Próbowałem znaleźć sposoby, aby to zrobić od kilku dni, w tym korzystając z poniższych odpowiedzi, ale jak dotąd nie miałem szczęścia. Po ponownym uruchomieniu lub tworzeniu z AMI (nawet tych, do których zastosowano odpowiedzi), nadal zaczynają się w rozdzielczości 1024x768.
Sean

Odpowiedzi:

4

Oświadczenie: TightVNC nie jest bezpieczny, więc jeśli problemem jest bezpieczeństwo, może być konieczne zastosowanie innego podejścia. Cały proces zajmie tylko kilka minut, więc dziura w zabezpieczeniach jest niewielka, ale mimo to istnieje.

  1. Zainstaluj TightVNC Server na instancji EC2, aby móc zalogować się do konsoli
  2. Odłącz wszystkie sesje zdalnego pulpitu użytkownika i przywróć sesję do konsoli
  3. Użyj TightVNC Viewer, aby zalogować się do konsoli instancji EC2, upewniając się, że port 5900 jest otwarty dla tego połączenia
    • Kliknij pulpit prawym przyciskiem myszy i wybierz „Rozdzielczość ekranu”
    • Wybierz „Ustawienia zaawansowane”
    • Wybierz „Wyświetl wszystkie tryby”
    • Wybierz wyższą rozdzielczość
Kenny Trytek
źródło
To pozwoliło mi zmienić rozdzielczość, która, jak wierzyłem, rozwiązałaby mój prawdziwy problem, jednak tak się nie stało. Moje testy selenu, które są uruchamiane automatycznie na moim serwerze systemu Windows 2008 ec2 za pomocą harmonogramu zadań, nadal działają w małej rozdzielczości. Nawet po zaktualizowaniu powyższego, działają w mniejszej rozdzielczości. Tak, okna są ustawione na maksymalizację rozdzielczości w konfiguracji selenu.
Skopiuj i wklej
1

Możesz zmienić rozdzielczość ekranu, modyfikując dwie wartości rejestru. Te dwie wartości to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolutionGdzie GUID jest losowo generowanym GUID.

Możesz faktycznie podać dowolną wartość XResolution i YResolution, o ile są one szesnastkowe.

Uwaga: W przypadku monitora CRT określenie absurdalnej rozdzielczości może uszkodzić monitor. W przypadku monitora LCD monitor może nie wyświetlać żadnego interfejsu użytkownika. Dobrym sposobem na zmianę rozdzielczości ekranu jest zapisanie liczby pikseli, które chcesz wypełnić szerokością ekranu (jest to XResolution) oraz liczby pikseli, które chcesz na wysokości ekranu (YResolution). Kalkulator Windows (niedostępny w Server Core, będziesz musiał znaleźć inny komputer lub zaawansowany kalkulator sprzętowy) oferuje łatwy sposób konwersji liczb dziesiętnych na szesnastkowe. Następnie można użyć tych wartości, aby zmodyfikować odpowiednie wartości rejestru. Ponowne uruchomienie sprawi, że preferowana rozdzielczość ekranu spełni się.

Głębia kolorów używana na monitorze jest rejestrowana w następującej wartości rejestru: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPelNa moim urządzeniu ta wartość szesnastkowa została ustawiona na 0x00000008 (8), co oznaczało, że mój ekran używał 8-bitowej głębi kolorów. (256 kolorów) Zmiana na 16 bitów (0x00000010) spowoduje wyświetlenie 65536 kolorów (wysokie kolory) Inne dostępne wartości to 24 bity (0x00000018) i 32 bity (0x00000020).

Źródło

paradroid
źródło
Nie mam DefaultSettings. * Klucze rozdzielczości w żadnym z GUID.0000. Myślę, że to dlatego, że ma tylko urządzenia wirtualne. Czy mogę dodać ten klucz do każdego z nich? Czy to zadziała?
Joel,
@Jel: Wątpię. Czy w ogóle nie ma oddziału „Wideo”? Mam instancję Server Core 2008 R2 na EC2, więc przyjrzę się temu wieczorem.
paradroid
Tak, nie sądziłem. Pomyślałem, że i tak zapytam. Będę szukać rozwiązań. Daj mi znać, jeśli coś znajdziesz. Dzięki.
Joel
Nie mam również DefaultSettings. * W moim rejestrze. Nie mogłem nawet spróbować tego rozwiązania. Wygląda na to, że może pomóc niektórym, ale nie wszystkim.
Skopiuj i wklej
1

Udało mi się to uruchomić, używając kombinacji powyższej odpowiedzi @ kenny-trytek i skonfigurując automatyczne logowanie.

Myślę, że rozdzielczość VNC jest ustawiana tylko dla bieżącego użytkownika, więc skonfigurowanie automatycznego logowania zapewnia, że ​​ten użytkownik ma otwartą sesję.

Skonfiguruj automatyczne logowanie https://support.microsoft.com/en-us/kb/324737

Następnie w folderze Start Up użytkowników podaj plik skrótu lub nietoperza, aby rozpocząć proces węzła selenu.

porto88
źródło
1
Podaj zasadnicze części odpowiedzi z linków referencyjnych, ponieważ odpowiedź może stać się nieważna, jeśli połączona strona (strony) ulegną zmianie.
DavidPostill
1

Próbowałem wszystkiego, co wyżej, i nie udało mi się. Znalazłem rozwiązanie unikalne dla mojej sytuacji, które było proste .. użyj powłoki systemu Windows.

napisał skrypt Power-Shell

Set-DisplayResolution -Width 1920 -Height 1080 -Force

nazwij to resolution.ps1

zapisane w C: \ myTestFolder

i uruchom go z wiersza poleceń, jak poniżej ..... (moje skrypty są sterowane przez pliki wsadowe)

WindowsPowerShell\v1.0\powershell.exe C:\myTestFolder\resolution.ps1
1234
źródło
0

Oto jak ustawić rozdzielczość ekranu bezgłowego w Windows AWS za pomocą RDP:

  • utwórz nowego użytkownika o nazwie rdp_local
  • utwórz skrypt startowy do RDP na określone konto użytkownika (np. selen) w określonej rozdzielczości
  • dodaj regułę zapory, aby otworzyć port RDP 3389
  • skonfiguruj automatyczne logowanie do logowania jako rdp_local przy ponownym uruchomieniu

Należy pamiętać, że automatyczne logowanie wymaga nazwy użytkownika i hasła oraz że hasło jest przechowywane niezaszyfrowane w rejestrze systemu Windows HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon.

Testowane na Amazon Windows Server 2012 R2 AMI.

Oto książka kucharska szefa kuchni, która wykonuje powyższe czynności: https://github.com/dhoer/chef-windows_screenresolution

Dennis Hoer
źródło
AKTUALIZACJA: Polecam użycie github.com/dhoer/choco-screen-resolution#screen-resolution do ustawienia rozdzielczości ekranu na komputerach z systemem Windows używanych do testowania selenu. Nie wymaga instalacji sterowników, a automatyczne logowanie jest bezpieczne (bez hasła w postaci zwykłego tekstu)
Dennis Hoer,