2009-03-11 2 views
1

64 비트 Windows 컴퓨터에서 터미널 서버 세션 정보를 수집하려고합니다. 내 질문은 두 가지입니다. 첫째, 32 비트 머신에서 우리는 다음 함수를 호출했다.x64에서 wtsapi32.WTSQuerySessionInformation() 실패

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 비트 컴퓨터 에서이 기능을 호출에 대해 많이 찾을 수 없습니다. 둘째, 누구나 TS 클라이언트 세션 정보를 얻기위한 다른 옵션을 알고 있습니까? 특히 TS에 액세스하는 컴퓨터 이름이 필요합니다.

도움을 주셔서 감사합니다.

답변

1

64 비트 시스템에서 정확히 호출이 실패합니까? 내 생각 엔이 함수의 ANSI 버전을 호출한다는 사실과 관련이 있다는 것입니다. 유니 코드 버전 (WTSQuerySessionInformationW)을 사용하는 것이 더 나을 것입니다.

는 는 그러나 두 번째 질문에 대답하기 위해, 당신이 P/처리하지 않도록 Cassia를 사용하여 시도 할 수 있습니다 것은 호출

:

New Cassia.TerminalServicesManager().CurrentSession.ClientName 

I가 그것을 시도했다면 내가 기억할 수 없습니다 전에는 64 비트 머신 이었지만, 제대로 작동한다면 조금 더 편하게 사용할 수 있습니다.

EDIT : 64 비트 Windows Server 2008 R2 베타 시스템에서 Cassia를 테스트 한 결과 정상적으로 작동합니다.

+0

단, 정확했습니다. 유니 코드 버전을 사용해야했습니다. –

관련 문제