По совету уважаемого человека, создаю эту тему, хотя особого успеха не ожидаю.
Пишу маленькую утилиту (RDP Info) которая показывает информацию о подключенных пользователях и их сессиях.
Если кому интересно вот тут есть неплохой пример (в примере только для одного, текущего пользователя)
Проблема начинается когда в параметрах запроса указываю WTSInitialProgram. Получаю строку (путь к программе) которая стартует при входе пользователя, (на примере 1С терминального сервера это может быть c:\1C.bat)
Собственно проблема в том что опрос ведется по таймеру, и с каждым разом программа в оперативке занимает все больше и больше памяти. Это только на параметре WTSInitialProgram!
Вот фрагмент кода в котором у меня проблема:
- Код: Выделить всё
Public Function GetSessionInformation(ByRef nSessionID As Long)
Dim RetVal As Long
Dim lpbuffer As Long
Dim Count As Long
RetVal = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, nSessionID, WTSInitialProgram, lpbuffer, Count)
If RetVal Then
GetSessionInformation = GetStringFromLP(lpbuffer)
WTSFreeMemory lpbuffer
End If
End Function
Private Function GetStringFromLP(ByVal StrPtr As Long) As String
Dim b As Byte
Dim tempStr As String
Dim bufferStr As String
Dim Done As Boolean
Done = False
Do
' Get the byte/character that StrPtr is pointing to.
CopyMemory b, ByVal StrPtr, 1
If b = 0 Then ' If you've found a null character, then you're done.
Done = True
Else
tempStr = Chr$(b) ' Get the character for the byte's value
bufferStr = bufferStr & tempStr 'Add it to the string
StrPtr = StrPtr + 1 ' Increment the pointer to next byte/char
End If
Loop Until Done
GetStringFromLP = bufferStr
End Function
Мой поиск пока не дал результатов.