windows 远程桌面研究

最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识。

1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server。

大家使用 mstsc.exe 远程桌面登录windows server时,退出时,99.99%的人会直接关闭 mstsc.exe 窗口,而不会点击开始--->退出。导致的问题是,登录用户已经提出了,但是 query user 和 query session 时,发现退出的用户,在 windows server 中还是 Active/运行中 则状态。这样会白白占用一个sesion的资源,可能会导致,别人登录时,报 类似 “超过人数” 的错误。

解决办法:

注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp],修改

MaxDisconnectionTime

将该值改为0x3e8(1000),也就是1000毫秒(也就是1秒),重启系统就ok。

Next look to the following key in the registry:

HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\Console

&

HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

Look for fInheritresetBroken (make dword 0) 不继承客户端的设置

fInheritReconnectSame (make dword 0) 不继承客户端的设置--连接到以前的同一个session

fReconnectSame (make dword 0) 是否连接到以前的同一个session

fResetBroken (make dword 1)  是否断开连接之后,进行连接的重置,也即使 不使用以前的session,重新初始化一个新的session

If all those values are OK then we‘ll look at the MaxDisconnectionTime values under the Terminal Server Key. You‘ll need to expand each subskey and look for these two entries in EVERY key, it exists multiple times

fInheritMaxDisconnectionTime (make this dword 0 to disable Inherit) -- 不继承客户端的设置

&

MaxDisconnectionTime (1000毫秒,也就是在 rdp 连接 端口 1秒 之后,立即将 rdp session 从 windows server中踢掉。)

2. 限制一个用户仅仅能够同时连接一次

监控时,我们要实现,一个用户名,只能同时登录一次,也就是同一个用户名,在windows server中,只能有一个登录会话存在,解决办法:

设置注册表:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser  为 1. 启用一个用户只能有一个session的限制。

fSingleSessionPerUser: TRUE indicates each user can have only a single session; FALSE otherwise.

3. 限制/放开限制  rdp 连接的总数

默认时,有些版本的系统,最多仅仅只能运行两个 administor 和 一个 console 登录session的存在。

去掉该限制的方法:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\MaxInstanceCount

设置为 ffffffff。对 rdp session 的并发数量不进行限制。

MaxInstanceCount

Updated: March 28, 2003

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Description

Stores configuration data for the policy setting Limit number of connections. (限制 rdp 连接的数量

Change Method

To change the value of this entry, use the Group Policy Object Editor (Gpedit.msc). The corresponding policy is located in Administrative Templates\Windows Components\Terminal Services.

https://technet.microsoft.com/en-us/library/cc758332(v=ws.10).aspx

相关参考资料:

1)http://remotedesktoprdp.com/force-single-session-allow-multiple-sessions-per-user

Force a single session or allow multiple Remote Desktop sessions per user

Remote Desktop/Terminal Services has two settings for multiple sessions. You can either allow multiple sessions per user (in which case if you log in twice, you‘ll get two sessions), or force a single session per user (in which case you can only log in once and subsequent sessions will be redirectedto the original session.

To change this setting, you‘ll need to perform a registry change. The following steps describe the process:

    1. Start Registry Editor (by default, this is located at c:\windows\regedit.exe).
    2. Go to the following registry key:

      HKEY_LOCAL_MACHINE\
          System\CurrentControlSet\Control\TerminalServer

    3. If the fSingleSessionPerUser value doesn‘t exist, create a new DWORD value named fSingleSessionPerUser
    4. Open the fSingleSessionPerUser value. The possible values for this setting are as follows:
      0x0
      Allow multiple sessions per user
      0x1
      Force each user to a single session
    5. Enter the new setting, and then click OK.

2)

https://msdn.microsoft.com/en-us/library/cc248610.aspx

For a specific terminal server session, USERCONFIG indicates the user and session configuration.

 typedef struct _USERCONFIG {
   ULONG fInheritAutoLogon  :1;
   ULONG fInheritResetBroken  :1;
   ULONG fInheritReconnectSame  :1;
   ULONG fInheritInitialProgram  :1;
   ULONG fInheritCallback  :1;
   ULONG fInheritCallbackNumber  :1;
   ULONG fInheritShadow  :1;
   ULONG fInheritMaxSessionTime  :1;
   ULONG fInheritMaxDisconnectionTime  :1;
   ULONG fInheritMaxIdleTime  :1;
   ULONG fInheritAutoClient  :1;
   ULONG fInheritSecurity  :1;
   ULONG fPromptForPassword  :1;
   ULONG fResetBroken  :1;
   ULONG fReconnectSame  :1;
   ULONG fLogonDisabled  :1;
   ULONG fWallPaperDisabled  :1;
   ULONG fAutoClientDrives  :1;
   ULONG fAutoClientLpts  :1;
   ULONG fForceClientLptDef  :1;
   ULONG fRequireEncryption  :1;
   ULONG fDisableEncryption  :1;
   ULONG fUnused1  :1;
   ULONG fHomeDirectoryMapRoot  :1;
   ULONG fUseDefaultGina  :1;
   ULONG fCursorBlinkDisabled  :1;
   ULONG fPublishedApp  :1;
   ULONG fHideTitleBar  :1;
   ULONG fMaximize  :1;
   ULONG fDisableCpm  :1;
   ULONG fDisableCdm  :1;
   ULONG fDisableCcm  :1;
   ULONG fDisableLPT  :1;
   ULONG fDisableClip  :1;
   ULONG fDisableExe  :1;
   ULONG fDisableCam  :1;
   ULONG fDisableAutoReconnect  :1;
   ULONG ColorDepth  :3;
   ULONG fInheritColorDepth  :1;
   ULONG fErrorInvalidProfile  :1;
   ULONG fPasswordIsScPin  :1;
   ULONG fDisablePNPRedir  :1;
   WCHAR UserName[USERNAME_LENGTH + 1];
   WCHAR Domain[DOMAIN_LENGTH + 1];
   WCHAR Password[PASSWORD_LENGTH + 1];
   WCHAR WorkDirectory[DIRECTORY_LENGTH + 1];
   WCHAR InitialProgram[INITIALPROGRAM_LENGTH + 1];
   WCHAR CallbackNumber[CALLBACK_LENGTH + 1];
   CALLBACKCLASS Callback;
   SHADOWCLASS Shadow;
   ULONG MaxConnectionTime;
   ULONG MaxDisconnectionTime;
   ULONG MaxIdleTime;
   ULONG KeyboardLayout;
   BYTE MinEncryptionLevel;
   WCHAR NWLogonServer[NASIFILESERVER_LENGTH + 1];
   APPLICATIONNAME PublishedName;
   WCHAR WFProfilePath[DIRECTORY_LENGTH + 1];
   WCHAR WFHomeDir[DIRECTORY_LENGTH + 1];
   WCHAR WFHomeDirDrive[4];
 } USERCONFIG,
  *PUSERCONFIG;

fInheritAutoLogon: The prompt for the password setting. TRUE indicates the use of client-specified autologon settings, FALSE specifies the use of machine autologon settings.

fInheritResetBroken: Reset the session when the connection is broken. TRUE indicates the value to use for fResetBroken from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritReconnectSame: Reconnect from the same client setting. TRUE indicates the value to use for fReconnectSame from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritInitialProgram: The initial program setting. TRUE indicates the value to use for InitialProgram from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritCallback: The callback setting. TRUE indicates the value to use for Callback from the user properties if the machine/user policy is not set, FALSE otherwise.<63>

fInheritCallbackNumber: The callback number setting. TRUE indicates the value to use for CallbackNumber from the user properties if the machine/user policy is not set, FALSE otherwise.<64>

fInheritShadow: The shadow setting. TRUE indicates the value to use for Shadow from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritMaxSessionTime: The maximum allowed session connection time setting. TRUE indicates the value to use for MaxSessionTime from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritMaxDisconnectionTime: The maximum allowed session disconnect time setting. TRUE indicates the value to use for MaxDisconnectionTime from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritMaxIdleTime: The maximum allowed session idle time. TRUE indicates the value to use for MaxIdleTime from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritAutoClient: The auto client setting. TRUE indicates the value to use for fAutoClientDrivers and fAutoClientLpts from the user properties if the machine/user policy is not set, FALSE otherwise.

fInheritSecurity: Inherit security setting. TRUE indicates the use of security settings from the user properties if the machine/user policy is not set, FALSE otherwise.

fPromptForPassword: Set to TRUE to ignore the credential sent from the client and always prompt for a passwordFALSE otherwise.

fResetBroken: Set to TRUE to log off the session when the idle timers for the session expire. Otherwise, the session will be disconnected when the timer expires.

fReconnectSame: FALSE indicates that the user can reconnect from any client computer to a disconnected session.


TRUE indicates that the user must reconnect to a disconnected session from the same client computer that initially established the disconnected session. Logging on from a different client computer will lead to a new terminal server session being created.

fLogonDisabled: TRUE indicates that a user cannot log on to a session remotely, FALSE otherwise.<65>

fWallPaperDisabled: TRUE indicates display of the desktop wallpaper in the session has been disabled, FALSE otherwise.

fAutoClientDrives: TRUE specifies to automatically redirect local drives on the client so they are accessible to the user in the remote terminal server session, FALSE otherwise.

fAutoClientLpts: TRUE specifies to automatically redirect printers on the client so they are accessible to the user in the remote terminal server session, FALSE otherwise.

fForceClientLptDef: TRUE indicates to force the client‘s redirected printer to be the default printer for the user, FALSE otherwise.

fRequireEncryption: TRUE indicates the connection must be encrypted, FALSE otherwise.

fDisableEncryption: TRUE indicates the connection does not need encryption, FALSE otherwise.

fUnused1: Not used.

fHomeDirectoryMapRoot: Not used.

fUseDefaultGina: TRUE indicates to override a third-party GINA so that only the default GINA is used for the terminal server session, FALSE otherwise.<66>

fCursorBlinkDisabled: TRUE indicates disable the blinking of the mouse cursor, FALSE otherwise.<67>

fPublishedApp: Not used.

fHideTitleBar: Not used.

fMaximize: Not used.

fDisableCpm: TRUE indicates disable client printer redirection, FALSE otherwise.

fDisableCdm: TRUE indicates disable client drive redirection, FALSE otherwise.

fDisableCcm: TRUE indicates disable client COM port redirection, FALSE otherwise.

fDisableLPT: TRUE indicates disable client printer (LPT) port redirection, FALSE otherwise.

fDisableClip: TRUE indicates disable client clipboard redirection, FALSE otherwise.

fDisableExe: TRUE indicates disable .exe file execution, FALSE otherwise.

fDisableCam: TRUE indicates disable client audio redirection, FALSE otherwise.

fDisableAutoReconnect: TRUE indicates disable auto-reconnect functionality, FALSE otherwise.<68>

ColorDepth: The color depth of the session.<69>

fInheritColorDepth: Set to TRUE to inherit color depth from the user or client configuration, FALSE otherwise.<70>

fErrorInvalidProfile: Set to TRUE if WFProfilePath, WFHomeDir, or WFHomeDirDrive is invalid (too long), FALSE otherwise.<71>

fPasswordIsScPin: Set to TRUE if the password field contains a smart card PIN.<72>

fDisablePNPRedir: Set to TRUE if Plug and Play (PnP) redirection is disabled, FALSE otherwise.

UserName: The user name used in autologon scenarios.

Domain: The domain name used in autologon scenarios.

Password: The password used in autologon scenarios.

WorkDirectory: The work directory for the initial program.

InitialProgram: The program to run instead of the default.<73>

CallbackNumber: The telephone number that will be returned by the Terminal Services server to the client when the server is unable to complete the connection request from the client. The user on the client side can use this number to call back for technical support.<74>

Callback: The callback class for callback operations.<75>

Shadow: The shadow setting of the session.

MaxConnectionTime: The maximum allowed session connection time setting of the session in milliseconds. The session will disconnect/logoff once the limit is reached.

MaxDisconnectionTime: The maximum allowed session disconnect time of the session in milliseconds(千分之一秒). The session will logoff once the limit is reached.

MaxIdleTime: The maximum allowed session idle time setting of the session in milliseconds. The session will disconnect/logoff once the limit is reached.(10分钟)

KeyboardLayout: The keyboard layout (HKL) of the session.

MinEncryptionLevel: The minimum allowed encryption level. Possible numeric values for this parameter include 1 (Low), 2 (Client Compatible), 3 (High), and 4 (FIPS). Detailed description of these encryption levels is included in [MS-RDPBCGR] sections 5.3.1 and 5.4.1.

NWLogonServer: The NetWare logon server name.<76>

PublishedName: Not used.

WFProfilePath: The terminal server profile path. Overrides the standard profile path.

WFHomeDir: The terminal server home directory path. Overrides the standard home directory.

WFHomeDirDrive: The terminal server home directory drive. Overrides the standard home directory.

3)https://msdn.microsoft.com/en-us/library/cc248657.aspx

后记:随便一个 google 相关资料还是很多的,也很权威。没有了google,或者英语阅读能力不太好,会产生很大的障碍。

时间: 2024-10-13 10:18:45

windows 远程桌面研究的相关文章

如何使用windows远程桌面控制树莓派3B

文章开头先来吐槽一下网上的免费教程.虽然现在是信息时代,我们可以在网上学习各种各样的知识.但是网上的教程鱼龙混杂,缺少时间有效性.甚至有些纯粹是误导,只看到结果,根本不披露实现过程.这一点要鄙视一下.       在实际操作过程中,你会遇到很多问题,这些问题对于还是小白的你来说,如果百度查不到,那就会打击你对树莓派的信心,加速树莓派吃灰的进程.所以,我会不定期的更新树莓派3b 的教程,教你一步一步的玩转树莓派!每一篇文章我都会注明更新日期,方便大家查阅.好,闲言少叙,开始今天的正题:树莓派3B(

windows 远程桌面连接 RPi 2B

/************************************************************************* * windows 远程桌面连接 RPi 2B * 声明: * 本文主要记录windows下如何远程RPi 2B,通过ssh进去安装xrdp.设置USB * 无线网卡等工作. * * 2016-2-15 深圳 南山平山村 曾剑锋 ************************************************************

windows远程桌面连接

服务器端: 1.我的电脑->管理->本地用户和组->用户->新建用户设置账号密码,隶属于administrator和remote user 2.我的电脑->属性->远程设置->允许用户远程操作 3.远程桌面连接-选项->本地资源->详细信息->驱动器(选择) 用于复制粘贴功能 客户端: 1.远程桌面连接-选项->本地资源->详细信息->驱动器(选择) 用于复制粘贴功能 windows远程桌面连接,布布扣,bubuko.com

树莓派进阶之路 (024) - windows远程桌面连接树莓派通过xrdp服务(转)

本文转载:http://www.cnblogs.com/edgexie/p/6527992.html 在网上看到很多关于windows远程桌面连接树莓派的教程.我也按照教程试过了,遇到了几个坑.特意记录在这. 先说正确的步骤. 1. 必须先安装tightvncserver!!! sudo apt-get install tightvncserver 2. 再安装xrdp服务. sudo apt-get install xrdp 3. 如果开着防火墙ufw , 那么打开服务器上的远程桌面访问端口

Windows远程桌面:端口号更改&指定IP连接

由于工作需要,经常要使用远程桌面连接到Windows服务器.Windows的默认远程桌面端口号为3389,为增加服务器安全性,除了在硬件设备做规则外,还可以用Windows自带的策略来增加Windows服务器的安全下. 下面以Windows2008R2为例,分别设置二种策略:(两种任选一种,不能同时生效) 远程桌面端口号更改 高级防火墙指定IP连接 第一种方式:远程桌面端口号更改 注册表要更改二处,第一处路径如下 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS

连接windows远程桌面

windows远程桌面连接成功 1.本机系统windows7,连接目标服务器windowsServer2008R2 2.服务器端 计算机->管理->功能摘要->添加功能->安装Telnet服务器 3.服务器端 计算机->管理->配置远程桌面->远程->仅允许运行使用网络级别身份验证的远程桌面的计算机连接->确定 4.本机 开始->控制面板->程序->程序和功能->打开或关闭windows功能->安装Telnet客户端 5.

Windows远程桌面IP地址控制访问权限

Windows远程桌面IP地址控制访问权限 1.           工作组环境 在工作组环境中,因为没有组策略服务,所以只有打开"控制台",添加"组策略对象编辑器",进行"组策略"设置. 1)  点击"开始"――"运行"――"cmd",输入"mmc",打开"控制台". 2)  点击"文件"菜单――"添加/删除管理单元

CentOS7配置图形界面及设置vnc远程连接、windows远程桌面连接

安装CentOS桌面 yum groupinstall "GNOME Desktop" 重启,进入终端,将启动模式变更为图形模式 systemctl set-default graphical.target 重启 方式一:安装和配置VNC服务器 yum install tigervnc-server 创建远程登录用户uservnc(可替换为其他用户名) useradd uservnc 设置密码 passwd uservnc 附:VNC Viewer官网https://www.realv

CentOS下通过rdesktop连接Windows远程桌面

众所周知,微软的Windows提供了一种远程桌面系统(Remote Desktop),该服务的默认端口是3389,可使用户远程登录进行系统管理或作为终端服务器运行各种应用软件. 而要连接Windows远程桌面,需在Windows客户端安装相应的软件(tsclient).如果你是Windows服务器管理员肯定使用过该工具,因为远程桌面能大大方便系统管理员远程维护服务器.在Linux系统中,同样可以通过一款免费工具rdesktop连接到Windows远程桌面. 下面就来和大家分享如何在Linux(C