vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Prüfen ob logged in User per RDP verbunden ist u. von Wo kommt ggf die Verb. her 
Autor: SuperEbse
Datum: 26.05.10 16:50

So,

manchmal hilft es doch nach Alternativen zu den API´s zu suchen.

Hier die Entgültige und Funktionsfähige Lösung:

Stichwort: System.Runtime.InteropServices.Marshal


Imports System.Runtime.InteropServices
Imports System
 
Module RDP_API
 
    Private Const WTS_CURRENT_SERVER_HANDLE As Long = 0
 
    Public Enum WTSInfoClass
        WTSInitialProgram
        WTSApplicationName
        WTSWorkingDirectory
        WTSOEMID
        WTSSessionId
        WTSUserName
        WTSWinStationName
        WTSDomainName
        WTSConnectState
        WTSClientBuilderNumber
        WTSClientName
        WTSClientDirectory
        WTSClientProductId
        WTSClientHardwareId
        WTSClientAddress
        WTSClientDisplay
        WTSClientProtocolType
    End Enum
 
    'WTS Sitzungsanfragen-Struktur
    Public Structure WTS_SESSION_QUERY
        Public SessionID As Int32
        Public pWinStationName As Int32
        Public WTSClientName As String
        Public senum As WTSInfoClass
    End Structure
 
    'Funktionsdefinition API-Aufruf für Session-Daten auslesen
    <DllImport("wtsapi32", CharSet:=CharSet.Ansi)> _
    Public Function _
         WTSQuerySessionInformation(ByVal hServer As System.IntPtr, ByVal _
         sessionId As Integer, ByVal wtsInfoClass As WTSInfoClass, ByRef _
         ppBuffer As System.IntPtr, ByRef pBytesReturned As System.UInt32) As _
         UInt32
 
    End Function
 
 
    'Funktionsdefinition für API-Aufruf "Speicher freigeben",
    <DllImport("wtsapi32", ExactSpelling:=True, SetLastError:=False)> _
    Private Sub WTSFreeMemory(ByVal pMemory As IntPtr)
 
    End Sub
 
 
    'Funktion für Auslesen des RDP-Hostnames
    Public Function GetWTSQueryHost(ByVal SessionID As Int32) As String
        Dim retval As Int32
        Dim lpBuffer As System.IntPtr = IntPtr.Zero
 
 
        Dim Count As System.UInt32
        Dim lName As Int32
        Dim sName As String = ""
 
        Try
 
 
            'Remotesitzungsinformationen holen
            'retval = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, _
            '    SessionID, WTSInfoClass.WTSClientName, lpBuffer, Count)
 
 
            retval = WTSQuerySessionInformation(System.IntPtr.Zero, _
              WTS_CURRENT_SERVER_HANDLE, WTSInfoClass.WTSClientName, lpBuffer, _
              Count)
            'Funktionsausschnitt
            ' Prozedur erfolgreich
            If retval Then
 
                'Stringlänge ermitteln
                lName = Strings.Len( _
                  System.Runtime.InteropServices.Marshal.PtrToStringAnsi( _
                  lpBuffer))
 
                If lName <> 0 Then
 
                    sName = _
                      System.Runtime.InteropServices.Marshal.PtrToStringAnsi( _
                      lpBuffer)
 
                End If
 
                ' Speicher wieder freigeben
                WTSFreeMemory(lpBuffer)
            Else
 
                'Prozedurfehler: Keine RDP, Keine DLL da oder sonstwas faul...
                MsgBox("Fehler beim Auslesen der RDP-Sitzungsdaten. Es konnten" _
                  & _
                    "keine Informationen gewonnen werden. ", vbCritical, _
                    "DLL-Zugriffsfehler " & Err.LastDllError)
 
            End If
 
            'Returnwert
            Return sName
        Catch ex As Exception
            Return ""
        End Try
    End Function
 
End Module
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Prüfen ob logged in User per RDP verbunden ist u. von Wo kom...8.264SuperEbse26.05.10 07:29
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...7.250SuperEbse26.05.10 09:53
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.613JensWerner24.11.10 09:31
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.669ModeratorDaveS24.11.10 10:03
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.585JensWerner24.11.10 10:15
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.561ModeratorDaveS24.11.10 10:48
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.618JensWerner24.11.10 11:01
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.563ModeratorDaveS24.11.10 11:14
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.526JensWerner24.11.10 11:25
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.549ModeratorDaveS24.11.10 11:41
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.537JensWerner24.11.10 11:59
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...7.086SuperEbse26.05.10 11:52
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.859ModeratorDaveS26.05.10 11:54
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.799SuperEbse26.05.10 12:08
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.927ModeratorDaveS26.05.10 12:29
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.836SuperEbse26.05.10 15:39
Prüfen ob logged in User per RDP verbunden ist u. von Wo kom...7.038SuperEbse26.05.10 16:50
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...7.135SuperEbse28.05.10 12:08
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.948ModeratorFZelle28.05.10 13:08
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.797SuperEbse28.05.10 13:26
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...7.017SuperEbse30.05.10 20:49
Re: Prüfen ob logged in User per RDP verbunden ist u. von Wo...6.854SuperEbse31.05.10 08:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel