wtsapi32.WTSQuerySessionInformation () Сбой на x64 - PullRequest
1 голос
/ 11 марта 2009

Я пытаюсь собрать информацию о сеансе сервера терминалов на 64-битных компьютерах с Windows. Мой вопрос в два раза. Во-первых, на 32-разрядных машинах мы вызывали следующую функцию, которая работала нормально.

Private Declare Function WTSQuerySessionInformation Lib "wtsapi32" _
                  Alias "WTSQuerySessionInformationA" _
                 (ByVal hServer As Integer, _
                  ByVal SessionID As Integer, _
                  ByVal WTSInfoClass As Integer, _
                  ByRef ppBuffer As String, _
                  ByRef lLen As Integer) As Integer

На 64-битных машинах этот вызов функции завершается неудачно. У кого-нибудь есть идеи о том, как это исправить? Я гуглил, но не мог найти много о вызове этой функции на 64-битной машине. Во-вторых, кто-нибудь знает какие-либо другие варианты получения информации о сеансе TS Client? В частности, мне нужно имя компьютера, который обращается к TS.

Большое спасибо за помощь.

1 Ответ

1 голос
/ 09 апреля 2009

Как точно происходит сбой вызова на 64-битной машине? Я предполагаю, что это как-то связано с тем, что вы вызываете ANSI-версию функции. Возможно, вам повезет больше с версией Unicode (WTSQuerySessionInformationW).

Но чтобы ответить на второй вопрос, вы можете попробовать Кассия , чтобы вам не приходилось иметь дело с P / Invokes:

New Cassia.TerminalServicesManager().CurrentSession.ClientName

Я не помню, пробовал ли я это раньше на 64-битной машине, но если это сработает, это может немного облегчить вам жизнь.

РЕДАКТИРОВАТЬ: только что протестировал Cassia на 64-битной Windows Server 2008 R2 бета-машине, и она отлично работает.

...