PDA

Visualizza versione completa : VB e Terminal Server


Mentos
30-01-2004, 15.21.39
Ciao a tutti,
vorrei sapere come fare per sapere se un determinato programma in esecuzione con terminal server oppure in locale. Come devo fare?
Per capirci meglio:
faccio partire il programma da un'icona (che pu essere il link all'exe sul pc locale oppure 1 link ad una connessione terminal server)
Vorrei sapere come fare a sapere se il programma eseguito via terminal server oppure in locale.
Non so pi dove sbattere la testa...uff

alex_napoli
04-02-2004, 13.32.28
Mi sa che non lo saprai mai perch un programma avviato tramite Terminal Server risulta a tutti gli effetti un processo dell'utente che hai utilizzato per fare il login con TS.
Quindi Se chiudi Terminal Server il processo continua a vivere e , soprattutto non puoi sapere chi ha avviato quel processo.

TS fa solo da operatore grafico ma non sa cosa fai col mouse e con la tastiera!

Deep73
04-02-2004, 19.02.45
Originariamente inviato da Mentos
Ciao a tutti,
vorrei sapere come fare per sapere se un determinato programma in esecuzione con terminal server oppure in locale. Come devo fare?
Per capirci meglio:
faccio partire il programma da un'icona (che pu essere il link all'exe sul pc locale oppure 1 link ad una connessione terminal server)
Vorrei sapere come fare a sapere se il programma eseguito via terminal server oppure in locale.
Non so pi dove sbattere la testa...uff

Allora. Io ho trovato dei componenti Delphi che si connettono ad un server terminal (tramite login amministrativo) e da l ricavi tutte le informazioni sulle sessioni aperte, utenti e processi della sessione. Ci sono delle API apposite di Windows che hanno tutte queste funzioni (cerca in MSDN... non me le ricordo proprio, all'inizio le trovai, ma poi vidi che questi componenti facevano tutto loro e le scartai :D ).
Trovato il modo di utilizzare queste API in VB (che sinceramente ignoro :confused: ), l'idea sarebbe questa:
- ti prendi la lista di tutte le sessioni attive sul terminal server tranne quella console.
- per ognuna ti fai una ricerca dell'eseguibile fra i processi... la cosa si pu semplificare se sai GIA' a priori chi l'utente che apre un Terminal con quella applicazione.
- se non lo trovi da nessuna parte, vuol dire che "gira" in locale. Per scrupolo ti colleghi al ToolHelper32 di Windows locale e vedi se c' pure l il processo.

E' laborioso ma diciamo che fattibile. In Delphi riuscirei a farlo, in VB sinceramente non lo so.

Ovviamente tutto questo lo puoi controllare da remoto, basta che ti logghi al Terminal Server (ma cos non sai se l'applicazione eseguita ANCHE in locale).