2009-06-30 7 views
1

При использовании VNC в сочетании с RDP я заметил поведение, которое VNC делает, то есть когда вы подключились к машине с использованием RDP (mstsc), а затем вы хотите подключиться к этому машина, использующая VNC, отключит сеанс RDP, и вы увидите на экране мигание экрана (черный экран на секунду), а затем вы подключаетесь через VNC. Что я хочу знать, так это то, что как VNC отключает активный RDP-сессии, любой фрагмент кода будет действительно полезен. СпасибоКак VNC отключает уже подключенную сессию RDP

ответ

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 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^