При использовании VNC в сочетании с RDP я заметил поведение, которое VNC делает, то есть когда вы подключились к машине с использованием RDP (mstsc), а затем вы хотите подключиться к этому машина, использующая VNC, отключит сеанс RDP, и вы увидите на экране мигание экрана (черный экран на секунду), а затем вы подключаетесь через VNC. Что я хочу знать, так это то, что как VNC отключает активный RDP-сессии, любой фрагмент кода будет действительно полезен. СпасибоКак VNC отключает уже подключенную сессию RDP
1
A
ответ
2
При подключении с помощью VNC он пытается подключиться к сеансу консоли, используя WinStationConnectW (который недокументирован), это отключит сеанс RDP.
Here is a snippet из TightVNC:
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
}