Newsgroup: it.comp.lang.visual-basic
Titolo: Sessioni Terminal Server

Buonasera a tutti.
Sono 10 giorni che cerco di capire.
Ho guardato su tutti i siti.
Stavo cercando di capire come determinare il nome di un pc connesso tramite 
servizi terminal.
Ho trovato su msdn un esempio: funziona ma dice il nome delle sessione. E' 
possibile invece avere il nome del pc?
Ho notato che il nome della sessione è rdp-tcp#1 col numero che cambia a 
ogni connessione, mentre mi serve sapere il nome del pc perchè è sempre 
quello.
Vi ringrazio anticipatammente.
Piero

 perchè è sempre quello.
Non vorrei sbagliarmi...
Il protocollo RDP (Remote Desktop) non attiva - e non richiede - un 
colloquio su protocollo di rete Microsoft, quindi all'atto del logon NON 
viene trasmesso l'identificativo del client, ma soltanto le credenziali per 
l'autenticazione e l'accesso al servizio (user/password).
La connessione ad un Remote Desktop Server può provenire da *qualsiasi* 
stazione TCP/IP (windows, linux, mac...), purché la stessa sia dotata di un 
software che sappia dialogare il protocollo RDP.
Nel tunnel criptato viaggiano soltanto le credenziali di accesso, quindi non 
saprai mai il nome di una stazione che si è connessa (potrebbe anche non 
averlo un nome, ad esempio un vecchio windows 95...).
In sostanza, vedilo come una sorta di "telnet", ma su interfaccia grafica. 
:-))
B.

 :-))
Ti ringrazio per la risposta.
Ma ho notato però che sia il task manager che il gestore servizi terminal 
mette il nome del pc connesso.
Come faccio a ottenere il nome del pc?
In sostanza mi servirebbe avere una lista nel quale mettere i nomi dei pc 
che si connettono al server.
Potrei usare qualche strada alternativa? Quale?
Finora ho usato getuser di access, ma con desktop remoto, tutte le 
connessioni partono dal server, mi risulta difficile sapere chi ha accesso 
al database.
Il motivo è per sapere chi fa cosa.
Grazie ancora e buona giornata.
Piero.

 Come faccio a ottenere il nome del pc?
Hai dato un'occhiata all'api WTSQuerySessionInformation?
Passandole WTSInfoClass=WTSClientName (10) dovresti ottenere quello che ti
serve.
http://msdn2.microsoft.com/en-us/library/aa383838.aspx
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.
--------------------------------------------------------------------------------
La mia Cartella di Posta in Arrivo è protetta con SPAMfighter
389 messaggi contenenti spam sono stati bloccati con successo.
Scarica gratuitamente SPAMfighter!

 che si connettono al server.
Hai ragione tu, in effetti ho ricontrollato ora le specifiche del protocollo 
RDP.
Pur non essendo un valore necessario per attivare la sessione, ed il "CLIENT 
NAME" viene comunque inviato dal client - come semplice valore stringa - ad 
apertura della connessione RDP.
Il formato della richiesta RDP è il seguente:
RDESKTOP [USER=<name>] [DOMAIN=<domain>]
    [PASSWORD=<pwd>|-] [CLIENT=<hostname>]
    [CONSOLE] [FRENCH] [NOENC|NOENCRYPTION]
    [SHELL=<winprog>] [DIR|DIRECTORY=<windir>]
    [LEFT=<n>] [TOP=<n>] [W|WIDTH=<n>] [H|HEIGHT=<n>]
    [D|DEPTH=<bpp>] [PUBSCREEN=<name>]
    [TITLE=<title>] [FS|FULLSCREEN] [SCREENMODE=<modenum>]
    [AUDIO=<unit>] [REMOTEAUDIO] [BITMAPSONLY] [NOMOUSE]
    [EXP|EXPERIENCE=28K8|56K|DSL|LAN] [RDP4] [SERVER] <server>
Come ti ho detto ieri, però, il client name non è un valore certificato per 
identificare la provenienza di una sessione, in quanto può essere 
"overridato" (si dice così, in italiano?) dal client stesso.
Ovviamente l'override non può essere effettuato utilizzando il client 
originale di Microsoft.
Ma siccome il protocollo è noto, ci sono molti client (Samba, ma anche altri 
per Linux e Mac) che permettono di inserire, nel campo "CLIENT", valori a 
piacimento.
Quindi, se devi effettuare un log delle connessioni, ricordati che i dati 
certi che identificano l'utente connesso sono esclusivamente lo username e 
l'indirizzo IP di provenienza (oltre naturalmente la data e l'ora).
In ogni caso, per ottenere il valore da te richiesto, credo che la API che 
ti ha suggerito Rafunk sia sicuramente adatta alle tue esigenze.
Ciao
B.

 ha scritto nel 
messaggio news:Bb9wh.1409$wO2...@tornado.fastwebnet.it...



Grazie per la risposta.
Ho provato, ottengo adesso una serie di informazioni ma tutte numeriche.
Cosa significano? Come trasformare in nomi pc, piuttosto che nomeid?
Grazie.
Piero.


Il parametro di output di quell'API è un puntatore ad un'area di memoria
contenente la stringa in questione.
Dai un'occhiata a questo wrapper (modulo con funzioni di comodo che a loro volta
chiamano le API di TS):
http://dev.remotenetworktechnology.com/api/wtsapi.htm
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.
--------------------------------------------------------------------------------
La mia Cartella di Posta in Arrivo è protetta con SPAMfighter
414 messaggi contenenti spam sono stati bloccati con successo.
Scarica gratuitamente SPAMfighter!

 Raf
Grazie ancora.
Ho provato il codice di quella pagina ma non funziona.
Però mi hai dato lo spunto. Il termine wrapper non l'avevo mai sentito; ho 
fatto allora una ricerca e ho trovato il codice in vb funzionante.
Non dice il nome del pc, ma il nome utentee per qullo che mi serve va 
benissimo.
Grazie di nuovo e buona serata.
Piero.

 Piero.
Strano che quel codice non vada. Io l'ho incorporato (sebbene con qualche
piccolo adeguamento) in un mio progetto e a me funziona.
Se ti interessa posso mandarti parte dei sorgenti.


 Raf
Non ricordo l'errore, poi lo riprovo e lo posto.
Se per te non è un problema, ti ringrazio se mi puoi inviare questa parte 
dei sorgenti.


 Piero.
Anche a te



L'errore č: variabile non definita in TOKEN_ADJUST_PRIVILEGES
Ho provato il codice che mi hai inviato. Funziona ed č proprio quello che 
avevo bisogno.
Grazie a te ho finito l'insonnia: posso dormire tranquillo adesso :-)
Grazie ancora e ciao.