ฉันจะเปลี่ยนความละเอียดของเครื่อง Windows Amazon EC2 ได้อย่างไร


9

(ฉันถกเถียงกันระหว่างการโพสต์ที่นี่ ServerFault และ StackOverFlow ตั้งไว้สำหรับสิ่งนี้หวังว่ามันจะถูกที่แล้ว)

เรารันชุดทดสอบ UI ของเราโดยใช้ Selenium Grid 2 กับเครื่อง Amazon EC2 Windows (ซึ่งเริ่มต้นขึ้นในการใช้ API CloudFormation ของ Amazon) คำถามของฉันคือฉันจะเปลี่ยนความละเอียดของเครื่องได้อย่างไร

ถ้าฉันรีโมตเข้าไปฉันสามารถระบุความละเอียดโดยใช้ Remote Desktop แต่เห็นได้ชัดว่าไม่ได้เปลี่ยนความละเอียดอย่างถาวร เมื่อเราทำการทดสอบความละเอียดมีขนาดเล็กมากที่เบราว์เซอร์จะตรวจสอบองค์ประกอบร่วมกันและทำให้การทดสอบล้มเหลว

ความคิดใด ๆ มีบางอย่างที่ฉันสามารถใส่ในสูตร CloudFormation ได้ไหม? มีบางอย่างที่ฉันสามารถทำได้กับภาพก่อนที่จะสร้าง AMI หรือไม่?

สกรีนช็อตของ Device Manager

ขอบคุณ


1
น่าสนใจ มันต้องเป็นอินสแตนซ์มาตรฐานที่ฉันจินตนาการดังนั้นจึงไม่มีการกำหนดกราฟิกการ์ด CUDA ให้กับอินสแตนซ์ ดังนั้นคุณกำลังทำงานกับการ์ดกราฟิกเสมือนมาตรฐาน ตัวจัดการอุปกรณ์มีลักษณะอย่างไร คุณสามารถโพสต์ภาพหน้าจอได้ไหม? คุณอาจจะสามารถบังคับให้มันสูงขึ้นได้โดย rdp-ing ไปยังคอนโซล:mstsc.exe /console
Paul

@Paul ฉันเพิ่มภาพหน้าจอ มันเป็นตัวอย่างมาตรฐาน Windows Server R2 ขอบคุณ
Joel

@ Joel คุณเคยแก้ไขปัญหานี้หรือไม่? ฉันพยายามหาวิธีในการทำเช่นนี้มาหลายวันแล้วรวมถึงการใช้คำตอบด้านล่าง แต่ก็ยังไม่มีโชค ในการรีบูตหรือการสร้างจาก AMI (แม้แต่คำตอบที่ใช้กับพวกเขา) พวกเขายังคงเริ่มต้นใน 1024x768
ฌอน

คำตอบ:


4

คำเตือน: TightVNC ไม่ปลอดภัยดังนั้นหากความปลอดภัยเป็นปัญหาคุณอาจต้องหาวิธีอื่น กระบวนการทั้งหมดจะใช้เวลาเพียงไม่กี่นาทีดังนั้นช่องโหว่จึงมีขนาดเล็ก แต่ก็มีอยู่

  1. ติดตั้งเซิร์ฟเวอร์ TightVNC บนอินสแตนซ์ EC2 เพื่อให้คุณสามารถเข้าสู่คอนโซล
  2. ยกเลิกการเชื่อมต่อเซสชันเดสก์ท็อประยะไกลของผู้ใช้ทั้งหมดและกลับสู่เซสชัน
  3. ใช้ TightVNC Viewer เพื่อเข้าสู่คอนโซลอินสแตนซ์ 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 ที่ระบุความละเอียดไร้สาระอาจทำให้จอภาพเสียหายได้ ในกรณีของจอภาพ LCD มอนิเตอร์ของคุณอาจไม่แสดงส่วนต่อประสานกับผู้ใช้อีกต่อไป วิธีที่ดีในการเปลี่ยนความละเอียดหน้าจอของคุณคือจดจำนวนพิกเซลที่คุณต้องการเติมความกว้างของหน้าจอด้วย (นี่คือ XResolution) และจำนวนพิกเซลที่คุณต้องการบนความสูงของหน้าจอ (YResolution) เครื่องคิดเลข Windows (ไม่มีใน Server Core คุณจะต้องค้นหาคอมพิวเตอร์เครื่องอื่นหรือเครื่องคำนวณขั้นสูงฮาร์ดแวร์) เสนอวิธีที่ง่ายในการแปลงจำนวนทศนิยมให้เป็นจำนวนฐานสิบหก จากนั้นคุณสามารถใช้ค่าเหล่านี้เพื่อปรับเปลี่ยนค่ารีจิสทรีที่เกี่ยวข้อง การรีสตาร์ทจะทำให้ความละเอียดหน้าจอที่คุณต้องการตรงกับความเป็นจริง

ความลึกของสีที่ใช้บนจอภาพของคุณถูกบันทึกในค่ารีจิสทรีต่อไปนี้: 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

@ Joel: ฉันสงสัยมัน ไม่มีสาขา 'วิดีโอ' เลยใช่ไหม ฉันมีอินสแตนซ์ของเซิร์ฟเวอร์ Core 2008 R2 บน EC2 ดังนั้นฉันจะดูตอนเย็นนี้
Paradroid

ใช่ไม่คิดอย่างนั้น คิดว่าฉันจะถามต่อไป ฉันจะหาวิธีแก้ปัญหาต่อไป แจ้งให้เราทราบหากคุณพบอะไร ขอบคุณ
Joel

ฉันยังไม่มี DefaultSettings. * ในรีจิสทรีของฉัน ฉันไม่สามารถลองวิธีนี้ได้ ดูเหมือนว่ามันจะช่วยได้บ้างไม่ใช่ทั้งหมด
คัดลอกและวาง

1

ฉันสามารถทำงานได้โดยใช้คำตอบของ @ kenny-trytek ด้านบนและตั้งค่าการเข้าสู่ระบบอัตโนมัติ

ฉันคิดว่าความละเอียด VNC ได้รับการตั้งค่าสำหรับผู้ใช้ปัจจุบันเท่านั้นดังนั้นการตั้งค่าการลงชื่อเข้าใช้อัตโนมัติจะทำให้แน่ใจว่าผู้ใช้รายนี้มีเซสชันที่เปิดอยู่

ตั้งค่าการเข้าสู่ระบบอัตโนมัติ https://support.microsoft.com/en-us/kb/324737

ถัดไปในโฟลเดอร์ Start Up ของผู้ใช้จะมีทางลัดหรือไฟล์ค้างคาวเพื่อเริ่มกระบวนการซีลีเนียม


1
โปรดอ้างอิงส่วนสำคัญของคำตอบจากลิงก์อ้างอิงเนื่องจากคำตอบอาจไม่ถูกต้องหากหน้าเชื่อมโยงมีการเปลี่ยนแปลง
DavidPostill

1

ฉันพยายามทั้งหมดข้างต้นทั้งหมดและล้มเหลว พบวิธีแก้ปัญหาที่ไม่ซ้ำกันสำหรับสถานการณ์ของฉันซึ่งง่าย .. ใช้ windows power-shell

เขียนสคริปต์ power-shell

Set-DisplayResolution -Width 1920 -Height 1080 -Force

ตั้งชื่อมัน resolution.ps1

บันทึกใน C: \ myTestFolder

และเรียกใช้จากบรรทัดคำสั่งด้านล่าง ..... (สคริปต์ของฉันถูกขับเคลื่อนด้วยแบตช์ไฟล์)

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

0

นี่คือวิธีที่ฉันตั้งค่าความละเอียดหน้าจอแบบไม่มีหัวบน AWS Windows โดยใช้ RDP:

  • สร้างผู้ใช้ใหม่ที่เรียกว่า rdp_local
  • สร้างสคริปต์เริ่มต้นเพื่อ RDP ลงในบัญชีผู้ใช้ที่ระบุ (เช่นซีลีเนียม) ที่ความละเอียดที่ระบุ
  • เพิ่มกฎไฟร์วอลล์เพื่อเปิดพอร์ต RDP 3389
  • กำหนดค่าการเข้าสู่ระบบอัตโนมัติเพื่อเข้าสู่ระบบเป็น rdp_local เมื่อรีบูต

โปรดทราบว่าการเข้าสู่ระบบอัตโนมัติต้องมีชื่อผู้ใช้และรหัสผ่านและรหัสผ่านจะถูกจัดเก็บแบบไม่เข้ารหัสภายใต้ NT \ CurrentVersion \ Winlogon windows NTLM HKEY \ SOFTWARE \ Microsoft \ Windows HKLM \ SOFTWARE \ Microsoft \ Windows

ผ่านการทดสอบบน Amazon Windows Server 2012 R2 AMI

นี่คือตำราทำอาหารของเชฟที่ทำตามด้านบน: https://github.com/dhoer/chef-windows_screenresolution


อัปเดต: ฉันอยากจะแนะนำให้ใช้github.com/dhoer/choco-screen-resolution#screen-resolutionเพื่อตั้งค่าความละเอียดหน้าจอบนเครื่อง windows ที่ใช้สำหรับการทดสอบซีลีเนียม มันไม่ต้องใช้ไดรเวอร์ในการติดตั้งและการลงชื่อเข้าใช้อัตโนมัตินั้นปลอดภัย (ไม่มีรหัสผ่านในข้อความธรรมดา)
Dennis Hoer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.