Comment modifier la résolution d'une machine Windows Amazon EC2?

9

(J'ai débattu entre la publication de ceci ici, ServerFault et StackOverFlow. Réglé pour cela. J'espère que c'est au bon endroit.)

Nous exécutons notre suite de tests d'interface utilisateur à l'aide de Selenium Grid 2 avec une machine Windows Amazon EC2 (qui est démarrée à l'aide des API CloudFormation d'Amazon). Ma question est, comment puis-je changer la résolution de cette machine?

Si je m'y connecte à distance, je peux spécifier la résolution à l'aide du Bureau à distance. Mais évidemment, cela ne change pas définitivement la résolution. Lorsque nous exécutons nos tests, la résolution est si petite que le navigateur scrute les éléments ensemble et entraîne l'échec des tests.

Des idées? Y a-t-il quelque chose que je peux mettre dans la recette CloudFormation? Puis-je faire quelque chose sur l'image avant de créer l'AMI?

Capture d'écran de Device Manager

Merci.

Joel
la source
1
Intéressant. Il doit s'agir d'une instance standard, j'imagine, donc aucune carte graphique CUDA affectée à l'instance. Vous travaillez donc avec une carte graphique virtuelle standard. À quoi cela ressemble-t-il dans le gestionnaire de périphériques? Pouvez-vous publier une capture d'écran? Vous pourrez peut-être le forcer plus haut en rdp-ing sur la console:mstsc.exe /console
Paul
@Paul, j'ai ajouté une capture d'écran. Il s'agit d'une instance standard. Windows Server R2. Merci.
Joel
@ Joel, avez-vous déjà résolu cela? J'essaie de trouver des moyens de le faire depuis plusieurs jours, y compris en utilisant les réponses ci-dessous, mais pas de chance jusqu'à présent. Au redémarrage, ou à la création d'AMI (même ceux pour lesquels les réponses leur ont été appliquées), ils démarrent toujours en 1024x768.
Sean

Réponses:

4

Avertissement: TightVNC n'est pas sécurisé, donc si la sécurité est un problème, vous devrez peut-être trouver une approche différente. L'ensemble du processus ne prendra que quelques minutes, de sorte que le trou de sécurité est petit, mais néanmoins.

  1. Installez TightVNC Server sur l'instance EC2 pour pouvoir vous connecter à la console
  2. Déconnectez toutes les sessions de bureau à distance des utilisateurs et renvoyez la session à la console
  3. Utilisez la visionneuse TightVNC pour vous connecter à la console d'instance EC2, en vous assurant que le port 5900 est ouvert pour cette connexion.
    • Faites un clic droit sur le bureau et sélectionnez "Résolution d'écran"
    • Sélectionnez "Paramètres avancés"
    • Sélectionnez "Liste de tous les modes"
    • Sélectionnez une résolution plus élevée
Kenny Trytek
la source
Cela m'a permis de changer ma résolution, ce qui, selon moi, réglerait mon vrai problème, mais ce n'est pas le cas. Mes tests de sélénium qui s'exécutent automatiquement sur mon serveur Windows 2008 ec2 via le planificateur de tâches fonctionnent toujours à une petite résolution. Même après la mise à jour avec ce qui précède, ils fonctionnent à une résolution plus petite. Oui, les fenêtres sont définies pour maximiser la résolution dans la configuration au sélénium.
Copiez et collez le
1

Vous pouvez changer la résolution d'écran en modifiant deux valeurs de registre. Ces deux valeurs sont: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolutionOù GUID est un GUID généré de façon aléatoire.

Vous pouvez en fait spécifier n'importe quelle valeur XResolution et YResolution tant qu'elles sont hexadécimales.

Remarque: dans le cas d'un moniteur CRT, une résolution absurde peut endommager votre moniteur. Dans le cas d'un moniteur LCD, votre moniteur peut ne plus afficher d'interface utilisateur. Un bon moyen de modifier la résolution de votre écran consiste à noter la quantité de pixels dont vous souhaitez remplir la largeur de l'écran (c'est la résolution X) et la quantité de pixels que vous souhaitez sur la hauteur de votre écran (la résolution Y). La calculatrice Windows (non disponible dans Server Core, vous devrez trouver un autre ordinateur ou une calculatrice avancée matérielle) offre un moyen facile de convertir des nombres décimaux en nombres hexadécimaux. Vous pouvez ensuite utiliser ces valeurs pour modifier les valeurs de registre correspondantes. Un redémarrage fera de votre résolution d'écran préférée une réalité.

La profondeur de couleur utilisée sur votre moniteur est capturée dans la valeur de registre suivante: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPelSur ma boîte, cette valeur hexadécimale a été définie sur 0x00000008 (8), ce qui signifie que mon écran a utilisé une profondeur de couleur de 8 bits. (256 couleurs) Le changer en 16 bits (0x00000010) affichera 65536 couleurs (Couleurs élevées). Les autres valeurs généralement disponibles sont 24 bits (0x00000018) et 32 ​​bits (0x00000020).

La source

paradroid
la source
Je n'ai pas les paramètres par défaut. * Clés de résolution dans l'un des GUID.0000. Je pense que c'est parce qu'il n'a que des appareils virtuels. Puis-je ajouter cette clé à chacun d'eux? Cela fonctionnerait-il?
Joel
@ Joel: J'en doute. N'y a-t-il pas du tout une branche «Vidéo»? J'ai une instance Server Core 2008 R2 sur EC2, donc je vais y jeter un œil ce soir.
paradroid
Ouais, je ne le pensais pas. Je pensais que je demanderais de toute façon. Je continuerai à chercher des solutions. Faites-moi savoir si vous trouvez quelque chose. Merci.
Joel
Je n'ai pas non plus les DefaultSettings. * Dans mon registre. Je ne pouvais même pas tenter cette solution. Il semble que cela pourrait aider certains, mais pas tous.
Copiez et collez le
1

J'ai pu faire fonctionner cela en utilisant une combinaison de la réponse de @ kenny-trytek ci-dessus et en configurant la connexion automatique.

Je pense que la résolution VNC n'est définie que pour l'utilisateur actuel, donc la configuration de la connexion automatique garantit que cet utilisateur a une session ouverte.

Configuration de la connexion automatique https://support.microsoft.com/en-us/kb/324737

Ensuite, dans le dossier de démarrage des utilisateurs, fournissez un fichier de raccourci ou de chauve-souris pour lancer le processus de nœud de sélénium.

porto88
la source
1
Veuillez citer les parties essentielles de la réponse à partir du ou des liens de référence, car la réponse peut devenir invalide si la ou les pages liées changent.
DavidPostill
1

J'ai tout essayé par dessus et j'ai échoué. J'ai trouvé une solution unique pour ma situation qui était simple .. utilisez windows power-shell.

écrit un script Power-Shell

Set-DisplayResolution -Width 1920 -Height 1080 -Force

nommez-le resolution.ps1

enregistré dans C: \ myTestFolder

et l'exécuter à partir de la ligne de commande comme ci-dessous ..... (mes scripts sont pilotés par des fichiers batch)

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

Voici comment définir la résolution d'écran sans tête sur AWS Windows à l'aide de RDP:

  • créer un nouvel utilisateur appelé rdp_local
  • créer un script de démarrage vers RDP dans un compte d'utilisateur spécifié (par exemple, sélénium) à la résolution spécifiée
  • ajouter une règle de pare-feu pour ouvrir le port RDP 3389
  • configurer la connexion automatique pour se connecter en tant que rdp_local au redémarrage

Notez que la connexion automatique nécessite un nom d'utilisateur et un mot de passe et que le mot de passe est stocké non chiffré sous le registre Windows HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon.

Testé sur Amazon Windows Server 2012 R2 AMI.

Voici un livre de recettes de chef qui fait ce qui précède: https://github.com/dhoer/chef-windows_screenresolution

Dennis Hoer
la source
MISE À JOUR: Je recommanderais d'utiliser github.com/dhoer/choco-screen-resolution#screen-resolution pour définir la résolution d'écran sur les machines Windows utilisées pour les tests de sélénium. Il ne nécessite aucun pilote à installer et la connexion automatique est sécurisée (pas de mots de passe en texte brut)
Dennis Hoer