คู่มือ · ทำงานที่ไหนบ้าง

Lang Switcher ทำงานในหน้าต่างของโปรแกรมที่เรียกใช้ในฐานะผู้ดูแลระบบไหม?

ได้ Lang Switcher ติดตั้งใน C:\Program Files และตัวติดตั้งจะสร้างใบรับรองของตัวเองบนคอมพิวเตอร์ ใช้ลงนามโค้ดเท่านั้น ลงนาม Lang Switcher แล้วทำลายกุญแจทันที และเมื่อถอนการติดตั้งก็ลบใบรับรองด้วย Windows จึงอนุญาตให้ Lang Switcher ทำงานในหน้าต่างของโปรแกรมที่เรียกใช้ในฐานะผู้ดูแลระบบ ส่วนหน้าจอคำขอ UAC, Ctrl+Alt+Del และหน้าลงชื่อเข้าใช้ โปรแกรมจับการกดแป้นไม่ได้ เป็นข้อจำกัดของ Windows

ทำไมทำงานได้

สิทธิ์ผู้ดูแลระบบ — ครั้งเดียว ตอนติดตั้ง: Lang Switcher ติดตั้งลงใน C:\Program Files\Lang_Switcher และตัวติดตั้งจะสร้างใบรับรองบนคอมพิวเตอร์เครื่องนี้ เพื่อให้ Lang Switcher ทำงานได้ในหน้าต่างของโปรแกรมที่เรียกใช้ในฐานะผู้ดูแลระบบด้วย (manifest uiAccess) ส่วนตัว Lang Switcher เองทำงานโดยไม่ใช้สิทธิ์ผู้ดูแลระบบ

uiAccess เป็นกลไกของ Windows เอง: แป้นพิมพ์บนหน้าจอ แว่นขยาย และผู้บรรยายก็ใช้กลไกนี้ โปรแกรมได้รับอนุญาตให้ทำงานในหน้าต่างระดับสูงกว่า แต่ไม่ได้รับสิทธิ์ผู้ดูแลระบบ Windows จะอนุญาตแบบนี้ก็ต่อเมื่อไฟล์โปรแกรมมีลายเซ็นที่คอมพิวเตอร์เครื่องนี้เชื่อถือ และอยู่ใน C:\Program Files

ด้วยเหตุนี้ การเริ่มพร้อม Windows จึงไม่มีคำขอ UAC: เครื่องหมายที่ “เริ่มทำงานเมื่อฉันลงชื่อเข้าใช้” ไม่ถามอะไร

ที่ที่ไม่ทำงาน

บนหน้าจอคำขอ UAC, Ctrl+Alt+Del และหน้าลงชื่อเข้าใช้ โปรแกรมจับการกดแป้นไม่ได้ เป็นข้อจำกัดของ Windows นอกจากระบบเองแล้วไม่มีโปรแกรมใดเข้าถึงที่นั่นได้

บางเกมก็เช่นกัน: เกมเหล่านี้อ่านแป้นพิมพ์โดยไม่ผ่าน Windows และไม่รับการแทนที่ข้อความ เพิ่มเกมแบบนี้ในข้อยกเว้น

รุ่นสำรอง

ถ้าเรียกใช้ตัวติดตั้งด้วยตัวเลือก /NOLOCALCERT จะได้รุ่นสำรอง: โค้ดเดียวกัน แต่ไม่มี uiAccess รุ่นสำรองทำงานได้ทุกที่ ยกเว้นหน้าต่างของโปรแกรมที่เรียกใช้ในฐานะผู้ดูแลระบบ: ที่นั่นแป้นพิมพ์ลัดไม่มีผล

ถ้าติดตั้งรุ่นเต็มบนคอมพิวเตอร์เครื่องนี้ไม่ได้ ตัวติดตั้งจะติดตั้งรุ่นสำรองเอง และตอนท้ายจะบอกด้วยหน้าต่าง: “ติดตั้ง Lang Switcher แล้ว แต่จะไม่ทำงานในหน้าต่างของโปรแกรมที่เรียกใช้ในฐานะผู้ดูแลระบบ…” ถ้าเห็นหน้าต่างนี้ ให้เขียนถึงผู้พัฒนา: เมนูไอคอน → “เขียนถึงผู้พัฒนา…”

คำถามและปัญหาที่ GitHub Issues ↗ หรืออีเมล send.me@panda-pishet-kod.dev