Як змінити роздільну здатність Windows-машини Amazon EC2?


9

(Я обговорював між публікаціями цього тут, ServerFault, і StackOverFlow. Налаштувавши це. Сподіваємось, це в потрібному місці.)

Ми запускаємо набір тестування на користувальницький інтерфейс, використовуючи Selenium Grid 2 з машиною Windows Amazon EC2 (що запускається з використанням API CloudFormation Amazon). Моє запитання: як я можу змінити роздільну здатність цієї машини?

Якщо я віддалено в нього, я можу вказати роздільну здатність за допомогою віддаленого робочого столу. Але очевидно, що це не змінює назавжди резолюцію. Коли ми запускаємо тести, роздільна здатність настільки мала, що браузер стискає елементи разом і спричиняє збій тестів.

Будь-які ідеї? Чи можна щось помістити в рецепт CloudFormation? Чи можу щось зробити до зображення перед створенням AMI?

Знімок екрана диспетчера пристроїв

Дякую.


1
Цікаво. Я думаю, це повинен бути стандартний екземпляр, тому жодна відеокарта CUDA не присвоєна екземпляру. Отже, ви працюєте зі стандартною віртуальною графічною картою. Як це виглядає в диспетчері пристроїв? Чи можете ви опублікувати скріншот? Можливо, ви зможете примусити його вище, перейшовши на консоль:mstsc.exe /console
Пол,

@Paul, я додав скріншот. Це стандартний екземпляр. Windows Server R2. Дякую.
Джоел

@Joel, ти колись це вирішував? Я кілька років намагаюся знайти способи зробити це, включаючи відповіді нижче, але поки що не пощастило. Після перезавантаження або створення з AMI (навіть тих, на які відповіді були застосовані до них), вони все ще починаються з 1024x768.
Шон

Відповіді:


4

Відмова від відповідальності: TightVNC не захищений, тому якщо безпека викликає проблеми, можливо, вам доведеться знайти інший підхід. Весь процес займе лише кілька хвилин, тому отвір у захисті невеликий, але все-таки є.

  1. Встановіть TightVNC Server на екземпляр EC2, щоб ви могли увійти в консоль
  2. Відключіть всі сеанси віддаленого робочого столу користувача та поверніть сеанс у консоль
  3. Використовуйте переглядач TightVNC для входу в консоль примірника EC2, переконавшись, що порт 5900 відкритий для цього з'єднання
    • Клацніть правою кнопкою миші на робочому столі та виберіть "Роздільна здатність екрана"
    • Виберіть "Розширені налаштування"
    • Виберіть "Список усіх режимів"
    • Виберіть більш високу роздільну здатність

Це дозволило мені змінити свою резолюцію, яка, як я вважав, виправить мою справжню проблему, проте це не зробило. Мої тести на селен, які запускаються автоматично на моєму сервері Windows 2008 ec2 через планувальник завдань, все ще працюють з невеликою роздільною здатністю. Навіть після оновлення вищезазначеного вони працюють з меншою роздільною здатністю. Так, вікна встановлені для досягнення максимальної роздільної здатності в конфігурації селену.
Скопіюйте та вставте

1

Ви можете змінити роздільну здатність екрана, змінивши два значення реєстру. Ці два значення: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolutionТам, де GUID - випадковий генерований GUID.

Ви можете фактично вказати будь-яке значення XResolution та YResolution, якщо вони є шістнадцятковими.

Примітка. У разі монітора CRT із зазначенням абсурдної роздільної здатності ваш монітор може пошкодити. Що стосується РК-монітора, ваш монітор більше не може відображати інтерфейс користувача. Хороший спосіб змінити роздільну здатність екрана - записати кількість пікселів, якими ви хочете заповнити ширину екрана (це XResolution) та кількість пікселів, яку ви хочете, на висоту екрана (YResolution). Калькулятор Windows (не доступний у сердечному ядрі, вам доведеться знайти інший комп'ютер або апаратний розширений калькулятор) пропонує простий спосіб перерахування десяткових сум у шістнадцяткову суму. Потім ви можете використовувати ці значення для зміни відповідних значень реєстру. Перезапуск дозволить вашій бажаній роздільній здатності екрану відповідати реальності.

Використовувана на моніторі глибина кольору відображається у такому значенні реєстру: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPelУ моєму вікні це шістнадцяткове значення було встановлено на 0x00000008 (8), що означало, що мій екран використовував 8-бітну глибину кольору. (256 кольорів) Якщо змінити його на 16 біт (0x00000010), буде показано 65536 кольорів (високі кольори). Інші значення, які зазвичай доступні, - це 24 біти (0x00000018) та 32 біти (0x00000020).

Джерело


У мене немає DefaultSettings. * Клавіші роздільної здатності в будь-якому з GUID.0000. Я думаю, це тому, що у нього є лише віртуальні пристрої. Чи можу я додати цей ключ до кожного з них? Це би спрацювало?
Джоел

@Joel: Сумніваюся. Чи взагалі немає відділення "Відео"? У мене є екземпляр Server Core 2008 R2 на EC2, тому я ознайомлюсь із цим вечором.
парадороїд

Так, не думав. Думав, я все одно запитаю. Я буду продовжувати шукати рішення. Повідомте мене, якщо ви щось знайдете. Дякую.
Джоел

Також у мене в реєстрі немає стандартних налаштувань. * Я навіть не міг спробувати це рішення. Здається, це могло б допомогти деяким, просто не всім.
Скопіюйте та вставте

1

Мені вдалося це зробити за допомогою комбінації відповіді @ kenny-trytek вище та налаштування автоматичного входу.

Я думаю, що роздільна здатність VNC встановлюється лише для поточного користувача, тому налаштування автоматичного входу гарантує, що цей користувач має відкритий сеанс.

Налаштування автоматичного входу https://support.microsoft.com/en-us/kb/324737

Далі, у папці "Start Up" для користувачів введіть файл ярлика чи bat, щоб розпочати процес селенового вузла.


1
Будь ласка, цитуйте основні частини відповіді із посилальних посилань (ив), оскільки відповідь може стати недійсною, якщо змінена сторінка (и) зміниться.
DavidPostill

1

Я спробував усе найбільше вище і не вдалося. Знайшов рішення, унікальне для моєї ситуації, яке було простим ..використовуйте Windows power-shell.

написав сценарій power-shell

Set-DisplayResolution -Width 1920 -Height 1080 -Force

назвіть це резолюція.ps1

збережено в C: \ myTestFolder

та запустіть його з командного рядка, як нижче ..... (мої сценарії керуються пакетними файлами)

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

0

Ось як я встановив роздільну здатність екрана без голови на AWS Windows за допомогою RDP:

  • створити нового користувача під назвою rdp_local
  • створити сценарій запуску для RDP у вказаний обліковий запис користувача (наприклад, селен) із заданою роздільною здатністю
  • додати правило брандмауера, щоб відкрити порт 3389 RDP
  • налаштувати автоматичний вхід для входу як rdp_local при перезавантаженні

Зауважте, що для автоматичного входу потрібні ім'я користувача та пароль, а пароль зберігається незашифрованим під реєстром Windows HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon.

Тестується на Amazon Windows Server 2012 R2 AMI.

Ось кулінарна книга шеф-кухаря, яка робить вище: https://github.com/dhoer/chef-windows_screenresolution


ОНОВЛЕННЯ: Я б рекомендував використовувати github.com/dhoer/choco-screen-resolution#screen-resolution для встановлення роздільної здатності екрана на машинах Windows, які використовуються для тестування селену. Він не вимагає встановлення драйверів, а автоматичний вхід захищено (немає паролів у простому тексті)
Dennis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.