当使用VNC与RDP结合使用时,我注意到VNC的行为,即当您使用RDP(mstsc)连接到计算机,然后您想要使用VNC连接到该计算机时,它将断开连接RDP会话,你会看到目标机器上的屏幕闪烁(黑屏一秒),然后你通过VNC连接,我想知道的是VNC如何断开活动的RDP会话,任何代码片段都将是真有帮助.. 感谢
答案 0 :(得分:2)
当您使用VNC连接时,它会尝试使用WinStationConnectW(未记录)连接到控制台会话,这将断开RDP会话。
来自Here is a snippet的 void setConsoleSession(DWORD sessionId) {
#ifdef RFB_HAVE_WINSTATION_CONNECT
if (!_WinStationConnect.isValid())
throw rdr::Exception("WinSta APIs missing");
if (sessionId == -1)
sessionId = mySessionId.id;
// Try to reconnect our session to the console
ConsoleSessionId console;
vlog.info("Console session is %d", console.id);
if (!(*_WinStationConnect)(0, sessionId, console.id, L"", 0))
throw rdr::SystemException("Unable to connect session to Console", GetLastError());
// Lock the newly connected session, for security
if (_LockWorkStation.isValid())
(*_LockWorkStation)();
#else
throw rdr::Exception("setConsoleSession not implemented");
#endif
}