在 Windows 10 中远程桌面会话后禁用锁定屏幕

在 Windows 10 中远程桌面会话后禁用锁定屏幕

我想在 Windows 10 中断开远程桌面会话后禁用锁定屏幕。

无论是本机还是使用类似 .exe 快捷方式来断开与目标机器上的会话的连接。

答案1

在 RDP 会话结束时,以管理员身份打开命令提示符并:

tscon 1 /dest:console

当连接到本地控制台时(使用 /admin)

答案2

根据 subcoder、Uramanathan、Duncan 和 Jimadine 在另一个问题(答案实际上与主题无关)中的一些工作,我创建了一个计划任务,该任务在以正常方式关闭/断开 RDP 连接(例如关闭 RDP 窗口)时运行。我在这里重新发布了答案,它与主题完全相关。

Microsoft-Windows-TerminalServices-LocalSessionManager/Operational该任务由事件日志获取注销事件 ( )触发EventID=24。然后,每当用户注销时,它都会运行一个简单的命令。该命令获得的输出query session如下所示:

SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>rdp-tcp#0         Matt                      2  Active
 console                                     5  Conn
 rdp-tcp                                 65536  Listen

它搜索%USERNAME%(在我的情况下是“Matt”)并获取该行的 ID 列。它将 ID 传递给命令tscon%k /Dest:console该命令为登录用户解锁屏幕。此命令可能仅在远程登录的用户与本地登录的用户相同时才有效,但我尚未测试。

这是要导入的任务计划程序 XML。Author 和 UserId 元素已被删除,导入任务时将自动填充您的用户。

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2022-02-10T11:17:45.9347484</Date>
    <URI>\Unlock remote screen</URI>
  </RegistrationInfo>
  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="Microsoft-Windows-TerminalServices-LocalSessionManager/Operational"&gt;&lt;Select Path="Microsoft-Windows-TerminalServices-LocalSessionManager/Operational"&gt;*[System[Provider[@Name='Microsoft-Windows-TerminalServices-LocalSessionManager'] and (EventID=24)]]&lt;/Select&gt;&lt;Suppress Path="Microsoft-Windows-TerminalServices-LocalSessionManager/Operational"&gt;*[UserData[EventXML[Address="LOCAL"]]]&lt;/Suppress&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
    </EventTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Windows\System32\cmd.exe</Command>
      <Arguments>/C "for /F "tokens=1,2,3 delims= " %i in ('query session ^| findstr "%USERNAME%"') do tscon %k /Dest:console"</Arguments>
      <WorkingDirectory>%USERPROFILE%</WorkingDirectory>
    </Exec>
  </Actions>
</Task>

相关内容