2009-06-30 3 views
1

Bei der Verwendung von VNC in Kombination mit RDP habe ich ein Verhalten festgestellt, das VNC hat, wenn Sie mit RDP (mstsc) eine Maschine verbunden haben und dann eine Verbindung herstellen möchten Maschine mit VNC, trennt die RDP-Sitzung, und Sie sehen einen Bildschirm blinken (schwarzer Bildschirm für eine Sekunde) auf dem Zielrechner und dann sind Sie über VNC verbunden, Was ich wissen will ist, dass VNC die aktive trennt RDP-Sessions, Jedes Code-Snippet wird wirklich hilfreich sein. DankeWie VNC die bereits verbundene RDP-Sitzung trennt

Antwort

2

Wenn Sie über VNC verbinden versucht es eine Verbindung mit der Konsole Sitzung mit WinStationConnectW (was undokumentiert ist) dies wird die RDP-Sitzung trennen.

Here is a snippet von 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 
    }