启用NLA的RDP客户端仍提示输入密码的解决方法咨询
解决NLA启用后RDP客户端仍提示输入密码的问题
针对你遇到的问题,在保持NLA正常工作的前提下,需补充以下关键代码设置来阻止密码提示:
必要的代码调整
禁用密码提示弹窗
设置AdvancedSettings8.PromptForCredentials为false,强制客户端使用代码传入的凭据,不弹出输入框:axMsRdpClient71.AdvancedSettings8.PromptForCredentials = false;明确指定NLA认证级别
为确保NLA认证机制生效,需设置AdvancedSettings8.AuthenticationLevel为2(对应RDESKTOP_AUTHENTICATION_LEVEL_NLA):axMsRdpClient71.AdvancedSettings8.AuthenticationLevel = 2;调整凭据设置顺序
建议将用户名、域、密码等凭据配置放在EnableCredSspSupport设置之后,确保NLA模式加载后能正确读取传入的凭据。
修改后的完整代码示例
private AxMSTSCLib.AxMsRdpClient7 axMsRdpClient71; // 基础配置先设置 axMsRdpClient71.ColorDepth = 16; axMsRdpClient71.AdvancedSettings2.PerformanceFlags = 111; // 启用NLA并配置认证规则 axMsRdpClient71.AdvancedSettings8.EnableCredSspSupport = true; axMsRdpClient71.AdvancedSettings8.AuthenticationLevel = 2; axMsRdpClient71.AdvancedSettings8.PromptForCredentials = false; // 配置登录凭据 axMsRdpClient71.UserName = _logon.MachineAccountName; axMsRdpClient71.Domain = _logon.LogOnTo; axMsRdpClient71.AdvancedSettings8.ClearTextPassword = _logon.Password; // 网关相关配置 axMsRdpClient71.Server = _logon.MachineName; axMsRdpClient71.TransportSettings3.GatewayCredSharing = 1; axMsRdpClient71.TransportSettings3.GatewayCredsSource = 0; axMsRdpClient71.TransportSettings3.GatewayDomain = _logon.LogOnTo; axMsRdpClient71.TransportSettings.GatewayHostname = _logon.RemoteDesktopGatewayAddress; axMsRdpClient71.TransportSettings3.GatewayPassword = _logon.Password; axMsRdpClient71.TransportSettings3.GatewayPreAuthRequirement = 0; axMsRdpClient71.TransportSettings3.GatewayProfileUsageMethod = 1; axMsRdpClient71.TransportSettings3.GatewayUsageMethod = 1; axMsRdpClient71.TransportSettings3.GatewayUsername = _logon.MachineAccountName; axMsRdpClient71.TransportSettings3.GatewayUserSelectedCredsSource = 0; axMsRdpClient71.Connect();
额外注意事项
- 确认目标远程桌面主机已启用NLA认证(系统属性→远程→勾选对应NLA相关选项);
- 若使用更高版本的RDP客户端(如AxMsRdpClient9),对应的属性可能在
AdvancedSettings9中,需根据版本调整; - 确保传入的
_logon.Password为明文且未被截断、加密,NLA模式下CredSSP组件需要明文密码完成认证。
内容的提问来源于stack exchange,提问作者kirei764
相关产品推荐
相关产品推荐

