Wie ändere ich die Auflösung eines Amazon EC2 Windows-Computers?


9

(Ich habe zwischen der Veröffentlichung hier, ServerFault und StackOverFlow diskutiert. Ich habe mich damit abgefunden. Hoffentlich ist es am richtigen Ort.)

Wir führen unsere UI-Testsuite mit Selenium Grid 2 auf einem Amazon EC2-Windows-Computer aus (der mit den CloudFormation-APIs von Amazon gestartet wird). Meine Frage ist, wie ändere ich die Auflösung dieser Maschine?

Wenn ich eine Remote-Verbindung herstelle, kann ich die Auflösung über Remotedesktop festlegen. Aber das ändert natürlich nichts an der Auflösung. Wenn wir unsere Tests ausführen, ist die Auflösung so gering, dass der Browser die Elemente zusammenfasst und die Tests fehlschlägt.

Irgendwelche Ideen? Kann ich etwas in das CloudFormation-Rezept aufnehmen? Kann ich vor dem Erstellen des AMI etwas mit dem Image tun?

Screenshot des Geräte-Managers

Vielen Dank.


1
Interessant. Es muss eine Standardinstanz sein, die ich mir vorstelle, also sind der Instanz keine CUDA-Grafikkarten zugewiesen. Sie arbeiten also mit einer virtuellen Standardgrafikkarte. Wie sieht es im Geräte-Manager aus? Kannst du einen Screenshot posten? Sie können es möglicherweise höher erzwingen, indem Sie es an die Konsole senden:mstsc.exe /console
Paul

@ Paul, ich habe einen Screenshot hinzugefügt. Es ist eine Standardinstanz. Windows Server R2. Vielen Dank.
Joel

@ Joel, hast du das jemals gelöst? Ich habe mehrere Tage lang versucht, Wege zu finden, einschließlich der folgenden Antworten, aber bisher kein Glück. Beim Neustart oder bei der Erstellung von AMI (auch bei denen, auf die die Antworten angewendet wurden) werden sie immer noch in 1024 x 768 gestartet.
Sean

Antworten:


4

Haftungsausschluss: TightVNC ist nicht sicher. Wenn also Sicherheit ein Problem darstellt, müssen Sie möglicherweise einen anderen Ansatz finden. Der gesamte Vorgang dauert nur wenige Minuten, daher ist die Sicherheitslücke klein, aber dennoch vorhanden.

  1. Installieren Sie TightVNC Server auf der EC2-Instanz, damit Sie sich bei der Konsole anmelden können
  2. Trennen Sie alle Benutzer-Remotedesktopsitzungen und geben Sie die Sitzung an die Konsole zurück
  3. Verwenden Sie den TightVNC Viewer, um sich bei der EC2-Instanzkonsole anzumelden, und stellen Sie sicher, dass Port 5900 für diese Verbindung geöffnet ist
    • Klicken Sie mit der rechten Maustaste auf den Desktop und wählen Sie "Bildschirmauflösung".
    • Wählen Sie "Erweiterte Einstellungen"
    • Wählen Sie "Alle Modi auflisten"
    • Wählen Sie eine höhere Auflösung

Dies ermöglichte es mir, meine Auflösung zu ändern, von der ich glaubte, dass sie mein eigentliches Problem beheben würde, dies jedoch nicht. Meine Selentests, die auf meinem Windows 2008 ec2-Server über den Taskplaner automatisiert ausgeführt werden, werden immer noch mit einer geringen Auflösung ausgeführt. Auch nach der Aktualisierung mit den oben genannten werden sie mit einer kleineren Auflösung ausgeführt. Ja, die Fenster sind so eingestellt, dass die Auflösung in der Selenkonfiguration maximiert wird.
Kopieren und Einfügen

1

Sie können die Bildschirmauflösung ändern, indem Sie zwei Registrierungswerte ändern. Diese beiden Werte sind: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolutionWobei GUID eine zufällig generierte GUID ist.

Sie können tatsächlich einen beliebigen XResolution- und YResolution-Wert angeben, sofern diese hexadezimal sind.

Hinweis: Bei einem CRT-Monitor, der eine absurde Auflösung angibt, kann Ihr Monitor beschädigt werden. Bei einem LCD-Monitor zeigt Ihr Monitor möglicherweise keine Benutzeroberfläche mehr an. Eine gute Möglichkeit, die Bildschirmauflösung zu ändern, besteht darin, die Anzahl der Pixel, mit denen Sie Ihre Bildschirmbreite füllen möchten (dies ist die XResolution), und die Anzahl der Pixel, die Sie auf Ihrer Bildschirmhöhe (die YResolution) haben möchten, aufzuschreiben. Der Windows-Rechner (in Server Core nicht verfügbar, Sie müssen einen anderen Computer oder einen erweiterten Hardware-Rechner finden) bietet eine einfache Möglichkeit, Dezimalbeträge in Hexadezimalbeträge umzuwandeln. Mit diesen Werten können Sie dann die entsprechenden Registrierungswerte ändern. Durch einen Neustart wird Ihre bevorzugte Bildschirmauflösung der Realität entsprechen.

Die auf Ihrem Monitor verwendete Farbtiefe wird im folgenden Registrierungswert erfasst: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPelAuf meiner Box wurde dieser hexadezimale Wert auf 0x00000008 (8) festgelegt, was bedeutet, dass mein Bildschirm eine Farbtiefe von 8 Bit verwendet. (256 Farben) Wenn Sie es auf 16 Bit (0x00000010) ändern, werden 65536 Farben (hohe Farben) angezeigt. Andere normalerweise verfügbare Werte sind 24 Bit (0x00000018) und 32 Bit (0x00000020).

Quelle


Ich habe keine DefaultSettings. * Auflösungsschlüssel in einer der GUID.0000. Ich denke, das liegt daran, dass es nur virtuelle Geräte gibt. Kann ich jedem von ihnen diesen Schlüssel hinzufügen? Funktioniert das?
Joel

@ Joel: Ich bezweifle es. Gibt es überhaupt keinen 'Video'-Zweig? Ich habe eine Server Core 2008 R2-Instanz auf EC2, daher werde ich sie mir heute Abend ansehen.
Paradroid

Ja, habe ich nicht gedacht. Ich dachte, ich würde trotzdem fragen. Ich werde weiter nach Lösungen suchen. Lassen Sie mich wissen, wenn Sie etwas finden. Vielen Dank.
Joel

Ich habe auch nicht die DefaultSettings. * In meiner Registrierung. Ich konnte diese Lösung nicht einmal versuchen. Es scheint, dass es einigen helfen könnte, nur nicht allen.
Kopieren und Einfügen

1

Ich konnte dies mit einer Kombination aus der obigen Antwort von @ kenny-trytek und dem Einrichten der automatischen Anmeldung zum Laufen bringen.

Ich denke, die VNC-Auflösung wird nur für den aktuellen Benutzer festgelegt. Wenn Sie also die automatische Anmeldung einrichten, wird sichergestellt, dass dieser Benutzer eine offene Sitzung hat.

Richten Sie die automatische Anmeldung unter https://support.microsoft.com/en-us/kb/324737 ein

Geben Sie als Nächstes im Startordner des Benutzers eine Verknüpfung oder eine Bat-Datei an, um den Selenknotenprozess zu starten.


1
Bitte zitieren Sie die wesentlichen Teile der Antwort aus den Referenzlinks, da die Antwort ungültig werden kann, wenn sich die verlinkten Seiten ändern.
DavidPostill

1

Ich habe alles versucht und bin gescheitert. Ich habe eine für meine Situation einzigartige Lösung gefunden, die einfach war. Verwenden Sie Windows Power-Shell.

schrieb Power-Shell-Skript

Set-DisplayResolution -Width 1920 -Height 1080 -Force

Nennen Sie es Auflösung.ps1

gespeichert in C: \ myTestFolder

und führen Sie es über die Befehlszeile wie unten aus ..... (meine Skripte werden von Batch-Dateien gesteuert)

WindowsPowerShell\v1.0\powershell.exe C:\myTestFolder\resolution.ps1

0

So stelle ich die Bildschirmauflösung ohne Kopf unter AWS Windows mithilfe von RDP ein:

  • Erstellen Sie einen neuen Benutzer mit dem Namen rdp_local
  • Erstellen Sie ein Startskript für RDP in einem angegebenen Benutzerkonto (z. B. Selen) mit der angegebenen Auflösung
  • Fügen Sie eine Firewall-Regel hinzu, um den RDP-Port 3389 zu öffnen
  • Konfigurieren Sie die automatische Anmeldung so, dass sie sich beim Neustart als rdp_local anmeldet

Beachten Sie, dass für die automatische Anmeldung ein Benutzername und ein Kennwort erforderlich sind und dass das Kennwort unverschlüsselt unter der Windows-Registrierung HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon gespeichert ist.

Getestet auf Amazon Windows Server 2012 R2 AMI.

Hier ist ein Kochbuch, das die oben genannten Aufgaben ausführt : https://github.com/dhoer/chef-windows_screenresolution


UPDATE: Ich würde empfehlen, github.com/dhoer/choco-screen-resolution#screen-resolution zu verwenden, um die Bildschirmauflösung auf Windows-Computern festzulegen , die für Selentests verwendet werden. Die Installation erfordert keine Treiber und die automatische Anmeldung ist sicher (keine Passwörter im Klartext)
Dennis Hoer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.