Как VNC отключает уже подключенный сеанс RDP - PullRequest
1 голос
/ 30 июня 2009

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

1 Ответ

2 голосов
/ 30 июня 2009

Когда вы подключаетесь с помощью VNC, он пытается подключиться к сеансу консоли, используя WinStationConnectW (который не задокументирован), это отключит сеанс RDP.

Вот фрагмент из 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
  }
...