begin process at 2010 02 09 23:13:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > [.NET2] WRAPPER POUR API WINDOWS TERMINAL SERVICES.

[.NET2] WRAPPER POUR API WINDOWS TERMINAL SERVICES.


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Source .NET ( DotNet ) Classé sous :wts, terminal, services, tse Niveau :Initié Date de création :16/06/2008 Date de mise à jour :03/07/2008 10:27:04 Vu / téléchargé :4 865 / 259

Auteur : Willi

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note


 Description

Cette source fournit un wrapper pour une partie de l'API Windows Terminal Services. A savoir.
-Retrouver les serveurs TS d'un domaine.
-Enumèrer toute les sessions (TSE et console) sur un serveur TS (peu importe l'état de la session).
-Enumèrer les sessions (TSE et console) selon leur état (Active/Connecter/Déconnecter).
-Retrouver le nom utilisateur d'une session TSE à partir d'un session ID.
-Retrouver le session ID à partir du nom utilisateur de la session TSE.
-Obtenir une multitude d'informations sur une session à partir de son session ID ou du nom utilisateur TSE. (Adresse ip du client, nom du client, protocole, domaine,nom de la station cliente...)
-Obtenir des informations de temps sur une session (Connect time, Login time, idle time, disconnected time, last input time)
-Rechercher un utilisateur TSE sur l'ensemble des serveurs TS un domaine et obtenir le nom du serveur TS sur lequel il est connecté.
-Envoyer un message à une session à partir de son session ID ou de son nom utilisateur TSE.

Utilisation d'un api nom documenté pour obtenir des infos de temps sur session TSE: http://groups.google.com/group/microsoft.public.wi n32.programmer.kernel/browse_thread/thread/c6dd86e 7df6d26e4/91fc4e79a5d6c495?lnk=st&q=%22terminal+se rvices%22+api+session+idle+time&rnum=1&hl=en#91fc4 e79a5d6c495

Une démo console est également fournit dans la source !.

Je pense avoir fait le tour de la source. Ah si celle ci est documentée et commentée.


 Conclusion

Bon développement à tous.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 juillet 2008 10:27:05 :
modif code démo.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) EXPLORER LA MFT D'UNE PARTITION NTFS
Source avec Zip Source avec une capture Source .NET (Dotnet) IPHELPER - PORTS TCP/UDP, TABLES DE ROUTAGE/ARP + FONCTIONS ...
Source avec Zip Source avec une capture Source .NET (Dotnet) PREVIEW HANDLER POUR OFFICE OUTLOOK 2007/10 SUR LES FICHIERS...
Source avec Zip Source avec une capture Source .NET (Dotnet) TEAM FOUNDATION SERVER - EXPLOITER LA PARTIE CLIENTE.
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] SYSTEM.IO.PIPES - UTILISATION D'UN CANAL NOMMÉ

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES LANGUES, COUNTRIES, CHAÎNES DE CARACTÈRE SIMPLE par gourky
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPLORER LA MFT D'UNE PARTITION NTFS par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) WRAPPER COMPLET SUR L'API DE BIOMÉTRIE DE WINDOWS 7 par Willi
Source avec Zip Source .NET (Dotnet) UTILISER L'ASSISTANT DE GRAVURE DE WINDOWS par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) EASYDESKXP par neo2k2

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) SERVICES WINDOWS par thebestdrummer
Source .NET (Dotnet) RÉCUPÉRER LE NOM DU PC CONNECTÉ À UN SERVEUR EN TERMINAL SER... par eldim

Commentaires et avis

Commentaire de eldim le 17/06/2008 17:51:12

Salut,
ça à pas l'air mal même si je n'ai pas vu toutes les infos...
ce qui serait un plus c'est d'utiliser Environment.UserDomainName
à la place de ton domain en dur

Commentaire de Willi le 17/06/2008 18:28:56 administrateur CS

Salut eldim,
+1 pour Environment.UserDomainName ;)

Commentaire de eldim le 18/06/2008 08:05:49

lol, j'ai regardé plus en détail le reste du code... purée c'est clair bien commenté, bien classé et surtout j'y ai appri un truc sympa : l'utilisation du yield que je ne connaissais pas. bon boulot

Commentaire de eldim le 18/06/2008 08:06:52 10/10

aller un ptit 10

Commentaire de eldim le 18/06/2008 08:18:47

Oups, j'aurais pas du mettre 10... stack overflow exception sur win2003 contenant plusieurs sessions rdp et ica

Commentaire de Willi le 18/06/2008 09:51:04 administrateur CS

La gestion des execptions est surement à revoir j'en conviens !
Pourtant j'en ai fait des séries de test avant de le mettre en prod où je bosse.
Où, à quel moment, le contexte (nb de sessions, sur domaine ?, etc...) ??

Commentaire de eldim le 18/06/2008 10:42:33

je l'ai executé sur un 2 serveurs différents chacun ayant un faible nombre de sessions ouvertes : pas plus de 15. Certains ont des sessions déconnectées mais toujours actives. Le programme donne en gros entre 3 et 5 sessions correctement puis donne un ID de session et plante

Commentaire de Willi le 18/06/2008 11:52:13 administrateur CS

Etrange j'ai testé sur 2 serveurs TS avec chacun 10/15 sessions et aucun problème...
Tu as des sessions qui utilisent un autre protocole que rdp ?

Commentaire de eldim le 18/06/2008 13:51:03

oui sur un des server j'ai du ica mais sur l'autre ça a planté pareil... peut-être un problème de droit... pourtant je l'ai exécuté en tant qu'admin du domain... à partir d'une session tse c'est surement parce que j'étais sur une session non ?

Commentaire de Willi le 18/06/2008 17:52:16 administrateur CS

Ah ok. je l'ai essayé uniquement sur des postes dans un domaine avec un utilisateur admin de son poste.
Je vais essayé sur une session tse !

Commentaire de dimitriusai le 02/07/2008 12:02:58

Hello, j'ai testé ton appli et fait une exception qui est levée.
Et ce lors de cette ligne ci

WTSLib.SessionTimeInfos sess_t = wts.GetTimeInfo(hServer, sess, sess_ext.WTSConnectState);

Qui permet d'avoir les informations de temps.

Une exception non gérée du type 'System.ExecutionEngineException' s'est produite dans WTSLib.dll
Si tu as une idée

Merci d'avance

Commentaire de Willi le 02/07/2008 13:17:23 administrateur CS

Cette méthode utilise une méthode non documentée de l'api de wts. Il se peut que ton client ne prenne pas en charge celle-ci.
Lance le débogage et regarde à quel moment dans GetTimeInfo l'exception est levée.

Commentaire de dimitriusai le 03/07/2008 10:17:15

Après quelques heures de travail, j'ai réussi à faire fonctionner wts, sur un serveur, mais mon but est de tester plusieurs serveurs, je fais donc une boucle afin de récupérer ces informations (dans le domaine bien sur ^^) mais il y a un plantage de wts après quelques serveurs.
Qu'en penses-tu ? le fais tu sur plusieurs serveurs ou sur un serveur unique ?
Connais tu unes autre solution afin de récupérer ce genre d'information.

Merci d'avance et Cordialement.(USAI.D)

Commentaire de Willi le 03/07/2008 10:29:12 administrateur CS

Pas d'erreur après bouclage sur 3 serveurs TS.
Mais à chaque changement de serveur TS tu dois ouvrir un handler sur celui-ci et le libérer à la fin avec les méthodes Open("NomServeurTs") et Close() comme dans l'exemple.

++

Commentaire de dimitriusai le 03/07/2008 10:33:36

Ok merci. Je vais abandonner cette solution car de mon coté cela plante après un ou deux serveurs et les infos ne sont pas tjrs correct alors que le handle est bien ouvert et fermé comme tu l'expliques bien dans ta source.

Je ne vois vraiment pas d'où vient le problème.

Commentaire de Willi le 03/07/2008 11:05:23 administrateur CS

Que veux-tu dire par "cela plante" ?
Tu as une exception de levée ?

Commentaire de dimitriusai le 03/07/2008 11:23:58

rien n'est levé, le try catch ne détecte rien du tt. Le programme plante simplement.  Dans la boucle suivante.

Try
            For i As Integer = 0 To MysqlResult1.Count - 1
                Dim wts As New WTSHelper()
                Dim count As Integer = 0
                Dim hServer As IntPtr = wts.Open(MysqlResult1(i).Item(0).ToString)
                MsgBox(MysqlResult1(i).Item(0).ToString)

                For Each sess As Integer In wts.EnumAllSessionsId(hServer)

                    Dim sess_ext As WTSLib.WTS_SESSION_INFO_EXT = wts.GetSessionInfos(hServer, sess)

                    sess_ext.ToString()
                    Dim tab As New ArrayList
                    Dim tab2(3)
                    tab2(0) = sess_ext.WTSUserName
                    tab2(1) = sess_ext.WTSClientName
                    tab2(2) = sess_ext.WTSSessionId
                    tab2(3) = statuschng(sess_ext.WTSConnectState)
                    'tab.Add(tab2)
                    'DataGridView1.Rows.Add(tab)

                Next
                wts.Close(hServer)
            Next

        Catch ex As Exception
            MsgBox("catch" & ex.Message)
        End Try

J'ai réutilisé ta dll en vb.net

Commentaire de nethobbit le 17/10/2008 17:01:40

Je crois avoir le même problème que Dimitriusai.  J'utilise le dll à partir d'une classe dans une appli Winforms en C#.  Je peux exécuter l'application une fois ou deux, mais à la longue l'appli gèle lors de l'appel à la fonction Close() de la dll.  Et j'ai un processus "vshost" qui persiste toujours.  Le "try/catch" que j'ai codé n'est jamais atteint car je n'ai aucun retour de l'appel à Close().

Commentaire de Willi le 17/10/2008 23:24:31 administrateur CS

Etrange, cela tourne depuis des mois sur des applis sous Windows2000 Pro et XP et RAS...
As-tu un cluster de monter sur tes serveurs TSE ?

Commentaire de cedricsynix le 02/09/2009 15:33:33

Salut,

Tout d'abord, merci de partages tes efforts et connaissances avec nous autres.
J'aimerais savoir comment récupérer l'IP du client. Pas l'ip lan mais WAN.
Quand je fais ceci, c'est l'ip 192.168.x.x qui est retournée et non 212.166.x.x
[code]Console.WriteLine(sess_ext.WTSClientAddress.ToString)[/code]

Si qq d'autre à une idée pour trouver l'ip d'un client connecté, ca m'intéresse :)

Merci d'avance,

Cédric

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

DLL et Services Web [ par rafraf ] Salut à tous ! J'ai un petit pb avec les DLL en code non managé, en mode Service Web, J'essaye de faire appel à une DLL dans un service web, j construire une couche métier pour des web-services [ par sabugo ] Bijour !!!Vala : il y a longtemps, lol. lorsque .net était encore en version béta, j'ai développé un site en asp.net... donc quelques notions il me re se servir d'un web services dnas une appli cliente [ par andrau ] Bonjour à tous, j'ai un probleme, je voudrais reussir a me servir d'un web services en c#j'ai fait un test en local avec iis (//localhost/...) ca marc Certifications [ par MorpionMx ] Bonjour, Je pensais, dès septembre, me mettre a passer 2 - 3 certifications ( Applications Windows C#, Applications Web C# et WebServices + composants Serveur vocal C# [ par Zebra1928 ] bonjour,J'ai besoin de savoir comment implementer un serveur vocal fondé sur des pages web asp.net ecrites en C#, Voice XML ou XML et les services web Sharepoint Services, Webparts et perso de VS 2003 [ par nimp0001 ] Bonjour,Je suis actuellement en train de developper un webpart pour un site Sharepoint Services (pas de sharepoint server mais c'est du pareil au même Probleme de connexion a un web service [ par landracul ] Bonjourvoila je test un web sevice de base qui additionne 2 entiers:je l'ai généré via VS.NETSi je test le service via IE: http://local sql server reporting services [ par elyadouni ] je veus savoir comment générer des rapports à partir d'une base de données, quel outil utilisé, faut installer sql serve Appli C# en TSE [ par yohbrousse ] Je dois réaliser une application C# en TSE (qui sera sur le serveur et qui sera appelée depuis un client leger)qui doit interroger une base SQL Reporting Services! [ par Son_of_the_Sun ] Bonjour tout le monde... Ca fait 5 jours que je suis dessus car je suis en stage et il faut absolument que j'avance... Le projet consiste a gén&


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales