У нас есть приложение, которое используется как RemoteApp. Пользователи получают доступ к RemoteApp через шлюз.
У нас возникают сбои у пользователей, использующих MSTSC v.6.3 на Win64 (протестировано с Windows 7 и Windows 8), каждый раз, когда происходит ненормальное отключение (сбой подключения).
Типичный сбой - это нарушение прав доступа внутри MSTSC с сообщением об ошибке «Подключение к удаленному рабочему столу перестало работать». но иногда MSTSC просто зависают. Средство просмотра событий показывает «Ошибка приложения», идентификатор события 1000, код исключения 0xC0000005 (== нарушение прав доступа).
MSTSC v.6.2 или более ранняя версия в Win64 или MSTSC (любая версия) в Win32 работает нормально.
Не будет сбоев, если мы разрешим пользователям напрямую обращаться к серверам TS, минуя сервер шлюза. В этом случае после сбоя подключения автоматическое переподключение MSTSC будет успешным.
Кто-нибудь знает способ решения этой проблемы? Любая помощь приветствуется.
Дополнительная информация из средства просмотра событий:
Faulting application name: mstsc.exe, version: 6.3.9600.16415, timestamp: 0x524b5b3d Faulting module name: mstscax.dll, version: 6.3.9600.16503, timestamp: 0x52c5f878 Exception code: 0xc0000005 Fault offset: 0x0000000000439b7a Faulting process id: 0x1658 Faulting application start time: 0x01cf84a3cfff7048 Faulting application path: C:\Windows\system32\mstsc.exe Faulting module path: C:\Windows\system32\mstscax.dll
Трассировка стека от отладчика Visual Studio Express 2012:
mstscax.dll!CClientProxyTransport::SetErrorStatus(long) mstscax.dll!CClientProxyTransport::GetErrorStatus(long,class CClientProxyTransport *) mstscax.dll!CProxyClientSendPacket::OnComplete(long,unsigned long) mstscax.dll!CAAAsyncSend::OnComplete(long) mstscax.dll!CAARpcClientChannel::Shutdown(unsigned long,class IAAAsyncOperation *) mstscax.dll!CAAAsyncDisconnectChannel::Invoke(unsigned long,class CAAChannel *,class IAATransportChannel *) mstscax.dll!CAAChannel::DisconnectInternal(int,long) mstscax.dll!CAARpcClientChannel::HandleReceiveComplete(struct _RPC_ASYNC_STATE *) mstscax.dll!CAARpcClientChannel::HandleIOCompletion(struct _OVERLAPPED *,unsigned long) mstscax.dll!CAagIO::AAGIoThreadFunc(void *) kernel32.dll!BaseThreadInitThunk() ntdll.dll!RtlUserThreadStart()
Мы обнаружили, что это связано с сообщением о входе на шлюз. Если вы отключите сообщение для входа на шлюз, он работает!
Я не понимаю, почему это происходит. Но это быстрое решение. И мы надеемся, что Microsoft исправит эту ошибку.