ในบทความนี้ เราจะแสดงวิธีเปลี่ยนรหัสผ่านผู้ใช้ในเซสชัน RDP บนคอมพิวเตอร์ Windows ระยะไกล ในฐานะ remote host คุณอาจมี Windows Server ที่มีการกำหนดค่า Remote Desktop Services role (RDSH) หรือ Windows 10 workstation ที่อนุญาตให้มี RDP connections หนึ่งหรือหลายการเชื่อมต่อ
ปัญหาหลักที่ผู้ใช้พบคือ คุณไม่สามารถเปิดหน้าต่างเปลี่ยนรหัสผ่านมาตรฐานโดยใช้ชุดปุ่ม Ctrl + Alt + Delete ในเซสชัน Remote Desktop (RDP) ได้ ชุดปุ่มนี้ไม่ถูกส่งผ่านไปยังเซสชัน RDP เนื่องจากมันทำงานบนระบบปฏิบัติการท้องถิ่นของคุณ
ใน Windows Server 2003/2008 คุณสามารถเปลี่ยนรหัสผ่านผู้ใช้ใน RDP ได้โดยคลิกปุ่ม Start และเลือก Windows Security -> Change Password

ในเวอร์ชันใหม่กว่า รวมถึง Windows Server 2016/2019/2022 และ Windows 10/11 ไม่มีรายการ Windows Security ในเมนู Start แล้ว ดังนั้นวิธีการเปลี่ยนรหัสผ่านผู้ใช้นี้จึงไม่สามารถใช้ได้
محتويات:
- เปลี่ยนรหัสผ่านผู้ใช้ใน RDP ด้วย CTRL + ALT + END
- การเปลี่ยนรหัสผ่านโดยใช้ On-Screen Keyboard
- สคริปต์ VBS/PowerShell สำหรับเปลี่ยนรหัสผ่านในเซสชัน RDP
- การเปลี่ยนรหัสผ่านผ่าน Remote Desktop Web Access (RDWEB)
- CredSSP NLA & การเปลี่ยนรหัสผ่านใน RDP
เปลี่ยนรหัสผ่านผู้ใช้ใน RDP ด้วย CTRL + ALT + END
ใน Windows เวอร์ชันปัจจุบัน คุณต้องใช้ชุดปุ่ม Ctrl + Alt + End เพื่อเปิดหน้าต่าง Windows Security ในเซสชัน RDP ชุดปุ่มนี้เหมือนกับ Ctrl + Alt + Delete แต่งทำงานในหน้าต่าง RDP เท่านั้น เลือก Change a password ในเมนู

ตอนนี้คุณสามารถเปลี่ยนรหัสผ่านของคุณในกล่องโต้ตอบมาตรฐาน (ป้อนรหัสผ่านปัจจุบันและตั้งรหัสผ่านใหม่สองครั้ง) 
การเปลี่ยนรหัสผ่านโดยใช้ On-Screen Keyboard
หากคุณเชื่อมต่อกับ Remote Desktop ของโฮสต์ Windows ผ่านโซ่ของ RDP sessions คุณจะไม่สามารถใช้ CTRL+ALT+END เพื่อเปลี่ยนรหัสผ่านผู้ใช้ได้ หน้าต่าง RDP แรกจะปัดชุดปุ่มคีย์บอร์ด ในกรณีเหล่านี้ คุณสามารถใช้ On-Screen Keyboard ในตัวของ Windows เพื่อเปลี่ยนรหัสผ่านของผู้ใช้
- รัน On-Screen Keyboard ในเซสชัน RDP เป้าหมาย (ง่ายที่สุดคือพิมพ์
osk.exeในเมนู Start);
- คุณจะเห็น On-Screen Keyboard
- กด
CTRL+ALTบนคีย์บอร์ดจริง (local) ของคุณ (ควรแสดงบนหน้าจอ) จากนั้นคลิกปุ่มDelบน On-Screen keyboard;
- ดังนั้น ชุดปุ่ม Ctrl+Alt+Del จะถูกส่งไปยังเซสชัน RDP ระยะไกล และกล่องโต้ตอบ Windows Security มาตรฐานจะปรากฏขึ้นซึ่งคุณสามารถเปลี่ยนรหัสผ่านได้
จำไว้ว่าเมื่อคุณเปลี่ยนรหัสผ่านของผู้ใช้ มันต้องเป็นไปตามข้อกำหนดของนโยบายรหัสผ่านท้องถิ่นหรือโดเมนของคุณ
หากรหัสผ่านใหม่ของคุณไม่เป็นไปตามข้อกำหนด คุณจะเห็นข้อความด้านล่าง:
Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirements of the domain.

โปรดทราบว่าหากมีการกำหนดค่า Minimum password age ใน domain policy (หรือใน Fine-Grained Password Policies – PSO) อาจป้องกันไม่ให้ผู้ใช้เปลี่ยนรหัสผ่านบ่อยกว่าที่ระบุใน GPO setting
คุณสามารถดูว่ารหัสผ่านของผู้ใช้หมดอายุเมื่อไหร่โดยใช้ PowerShell:
Get-ADUser -Identity jsmith -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}
สคริปต์ VBS/PowerShell สำหรับเปลี่ยนรหัสผ่านในเซสชัน RDP
คุณสามารถเรียกหน้าต่าง Windows Security ในเซสชัน RDP โดยใช้เครื่องมือในตัวของ Windows: VBScript, PowerShell หรือ Shell shortcut
ตัวอย่างเช่น สร้างไฟล์ข้อความ WindowsSecurity.vbs ด้วยโค้ด VBScript ต่อไปนี้บนเดสก์ท็อปของคุณ:
set objShell = CreateObject("shell.application")
objshell.WindowsSecurity
หากคุณดับเบิลคลิกไฟล์ VBS คุณจะเห็นฟอร์มมาตรฐานสำหรับเปลี่ยนรหัสผ่านของคุณ
คุณสามารถวางไฟล์ VBS นี้บน shared desktop บน RDS host ของคุณ (%SystemDrive%\Users\Public\Desktop\) หรือคัดลอกไฟล์ไปยังเดสก์ท็อปผู้ใช้โดยใช้ GPO

เช่นเดียวกัน คุณสามารถเปิดหน้าต่างเปลี่ยนรหัสผ่านจาก PowerShell ใช้คำสั่งด้านล่าง:
New-Object -COM Shell.Application).WindowsSecurity()

มีตัวเลือกในการสร้าง Windows File Explorer shortcut ด้วยลิงก์ต่อไปนี้:
C:\Windows\explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}

การเปลี่ยนรหัสผ่านผ่าน Remote Desktop Web Access (RDWEB)
หากคุณเข้าถึง RDP servers ของคุณผ่านโฮสต์ที่มีบทบาท Remote Desktop Web Access (RDWA) คุณสามารถอนุญาตให้เปลี่ยนรหัสผ่านที่หมดอายุบนหน้าล็อกอิน RDWA ได้ (อธิบายโดยละเอียดที่นี่)

CredSSP NLA & การเปลี่ยนรหัสผ่านใน RDP
มีคุณสมบัติสำคัญของการเปลี่ยนรหัสผ่านผู้ใช้ที่หมดอายุใน RDP ที่เกี่ยวข้องกับ Network Level Authentication (NLA) และโปรโตคอล Credential Security Support Provider (CredSSP) โดยค่าเริ่มต้น CredSSP ด้วย NLA สำหรับ RDP เปิดใช้งานบน Windows Server 2012/Windows 8 และใหม่กว่า NLA ปกป้อง RDP server โดยการรับรองความถูกต้องของผู้ใช้ก่อนสร้างเซสชัน RDP กับโฮสต์
หากรหัสผ่านของผู้ใช้หมดอายุ หรือ AD administrator เปิดใช้งานตัวเลือก userAccountControl “User must change password at next logon” (บ่อยที่สุดเปิดสำหรับบัญชี AD ใหม่) คุณจะเห็นข้อผิดพลาดต่อไปนี้เมื่อล็อกอินโดยใช้ RDP:
Remote Desktop Connection You must change your password before logging on the first time. Please update your password or contact your system administrator or technical support.

ผลคือ ผู้ใช้ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ RDP และเปลี่ยนรหัสผ่านได้
ในกรณีนี้ เพื่ออนุญาตให้ผู้ใช้ระยะไกลเปลี่ยนรหัสผ่านของพวกเขา คุณสามารถ:
- กำหนดค่าบทบาท RDWA ด้วยหน้าเปลี่ยนรหัสผ่านкакที่อธิบายข้างต้น
- ปิดใช้งาน NLA บน RDP host ของคุณ (ไม่แนะนำ!!! เนื่องจากลดระดับความปลอดภัยของการเชื่อมต่อ RDP อย่างมาก) และใช้ไฟล์ .rdp พร้อมบรรทัด
enablecredsspsupport:i:0สำหรับการเชื่อมต่อ - ใช้ RDP host แยกต่างหากเพื่อเปลี่ยนรหัสผ่านผู้ใช้ คุณไม่จำเป็นต้องติดตั้งบทบาท Remote Desktop Session Host บนโฮสต์นี้หรือเพิ่มผู้ใช้ในกลุ่ม Remote Desktop Users ท้องถิ่น แต่คุณต้องปิดใช้งาน NLA จากนั้นผู้ใช้จะสามารถเปลี่ยนรหัสผ่านได้ แต่จะไม่สามารถล็อกอินเซิร์ฟเวอร์ผ่าน RDP

- ผู้ใช้สามารถเปลี่ยนรหัสผ่านของพวกเขาได้จากระยะไกลโดยใช้ PowerShell (หากพวกเขามีการเข้าถึงเครือข่ายไปยัง domain controller)