Trong bài viết này, chúng tôi sẽ trình bày cách xử lý nếu bạn thấy màn hình đen thay vì desktop khi kết nối đến host Windows từ xa qua RDP. Vấn đề này thường xảy ra trong build mới nhất Windows 10 và Windows Server 2019, và tôi quyết định cung cấp một số thông tin về giải pháp điển hình từ knowledge base HelpDesk nội bộ.
Vì vậy bạn đang cố kết nối đến máy tính từ xa dùng client RDP Windows chuẩn (mstsc.exe) và sau khi nhập thông tin đăng nhập bạn thấy màn hình đen thay vì desktop.

Có nhiều lý do màn hình đen xuất hiện trong phiên RDP. Rất khó chẩn đoán hoặc phân loại chúng.
- Nhấn
CTRL+ALT+ENDtrong phiên RDP (cũng cho phép đổi mật khẩu trong phiên RDP) sau đó nhấp Cancel. Điều này đôi khi cho phép quay lại desktop trong phiên RDP. Nếu không giúp, mở Task Manager từ màn hình này và chạy tiến trình File Explorer (File -> Run new task ->explorer.exe-> OK);
- Đảm bảo caching bị tắt trong cài đặt RDP client (tắt tùy chọn Persistent bitmap caching trên tab Experience) và độ phân giải màn hình được hỗ trợ bởi host từ xa (đặt độ phân giải thấp hơn ở tab Display hoặc thử dùng chế độ Full Screen);

- Đảm bảo cả máy tính của bạn và máy từ xa dùng phiên bản driver video mới nhất. Thử cập nhật driver tự động (nếu chưa tắt, hoặc tải và cài driver thủ công);

Trong một số trường hợp, bạn phải đặt dùng driver video XDDM thay vì WDDM. Để làm vậy, mở Local Group Policy Editor (gpedit.msc) và đặt Use WDDM graphics display driver for Remote Desktop Connections = Disabled trong Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment (hoặc cùng trong registry:reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services” /v “fEnableWddmDriver” /t REG_DWORD /d 0 /f). Cập nhật cài đặt Group Policy trên host RDP/RDS;
- Trong Windows Server 2016 với timeout phiên RDP được cấu hình, tôi gặp phàn nàn user rằng sau khi cố kết nối đến phiên ngắt kết nối, nó không kích hoạt đúng và thấy màn hình đen. Chỉ user mới có thể kết thúc phiên RDP (
CTRL+ALT+End-> Sign out) hoặc admin có thể ép đóng (như mô tả trong bài Remote Desktop Services Is Currently Busy). Hoặc cấu hình cài đặt tích cực hơn để kết thúc phiên user ngắt kết nối; - Tắt dùng cổng UDP 3389 cho lưu lượng RDP (nó dùng cùng với cổng TCP 3389 mặc định trên Windows Server 2012 R2/Windows 8.1 và mới hơn). Có thể làm bằng cách bật tùy chọn Turn off UDP on client trong GPO cục bộ trên thiết bị client (Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Connection Client) hoặc qua registry:
reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client” /v “fClientDisableUDP” /t REG_DWORD /d 1 /f. Để tắt giao thức UDP cho lưu lượng RDP phía server, bật tham số GPO …Remote Desktop Session Host -> Connections -> Select RDP transport protocols =Use only TCP;
- Đôi khi trên host RDS, cần khởi động lại dịch vụ
Audiosrv(Windows Audio), sau đó profile user được load và Desktop xuất hiện.
Microsoft đưa ra một số khuyến nghị khác không luôn giúp, nhưng có thể sửa nguồn gốc vấn đề:
- Đảm bảo host RDP, client, và tất cả thiết bị mạng giữa chúng được cấu hình cùng kích thước MTU;
- Tắt nén lưu lượng RDP trong GPO cục bộ: Configure compression for RemoteFX data =
Do not use an RDP compression algorithm(Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host);
- Nếu vấn đề màn hình đen trong phiên RDP xảy ra trên Windows Server 2019 hoặc Windows 10 1809+, mở Event Viewer và kiểm tra Application and Service Logs -> Microsoft -> Windows -> RemoteDesktopService-RdpCoreTS. Xem có lỗi như
‘Failed GetConnectionProperty’ in CUMRDPConnection::QueryProperty at 2884 err=[0x80004001]‘,‘Connection doesn’t support logon error redirector’ in CUMRDPConnection::GetLogonErrorRedirector at 4199 err=[0x80004001]. Nếu thấy, tắt URCP (Universal Rate Control Protocol) dùng để truyền dữ liệu giữa client RDP và server qua UDP (MS-RDPEUDP2):
reg add “HKLM\SOFTWARE\Microsoft\Terminal Server Client” /v “UseURCP” /t REG_DWORD /d 0 /f
Hoặc đặt tham số registry này bằng PowerShell:
New-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Terminal Server Client' -Name UseURCP -PropertyType DWord -Value 0