Esegui l'applicazione o lo script sulla connessione RDC di Windows

Ho controllato un altro thread ( eseguire automaticamente uno script quando accedo a Windows ) , ma non ha risolto il mio problema esatto.

Ho bisogno di eseguire uno script quando viene eseguita una connessione in networking utilizzando la connessione remota di Windows.

Tuttavia, il thread sopra elencato funziona per l'accesso iniziale , tuttavia, se non si esegue l'accesso (che è necessario per alcuni processi in esecuzione nella mia networking), non verrà eseguito nuovamente lo script la prossima volta che qualcuno si connette al sistema utilizzando connessione remota al desktop. In precedenza stavamo utilizzando pcAnywhere per raggiungere questo objective, ma dopo aver eseguito alcuni problemi grafici con pcAnywhere, abbiamo deciso di allontanarlo da RDC.

Context: abbiamo bisogno di submit un'email in qualsiasi momento una connessione a determinate macchine. Il nome di accesso sarà sempre lo stesso per questi sisthemes e non si disconnette quando chiudiamo la connessione.

Alla mia conoscenza Windows non fornisce un metodo incorporato per l'esecuzione di un programma o di un script in connessione , solo accedere. Dovnetworking trovare un programma che registra con Windows (utilizzando WTSRegisterSessionNotification ) e ascolta il messaggio WM_WTSSESSION_CHANGE .

Un programma che fa quanto sopra riceverà notifiche da parte di Windows riguardo agli utenti di login, loghi, connessioni, disconnessioni e tutti gli events necessari per avviare uno script alla connessione e accedere.

Fuori dalla parte superiore della mia testa non so di alcuna applicazione (tranne pcAnywhere) che può farlo.

È ansible eseguire una nuova attività pianificata e definire il trigger in "Al momento di una nuova connessione a una session utente"

Se hai familiarità con la programmazione in .net, potresti voler guardare questo thread su Stack Overflow .

Secondo Steven A. Lowe:

presumibilmente,

System.Windows.Forms.SystemInformation.TerminalServerSession sarà true per una session desktop remota (o session VNC)

Puoi anche essere in grado di monitorare una connessione sul RDP, che per impostazione predefinita è TCP 3389.

Utilizza il trigger "In connessione alla session utente"

Nota: ho notato che la questione è contrassegnata "XP" / "Server2008". Ciò che è qui può funzionare solo su Vista / 2008R2 in poi.

Il task scheduler di Windows dispone di un trigger predefinito per questo. Viene chiamato On connection to user session .

Consente inoltre di distinguere tra gli utenti e tra le connessioni locali e remote.

L'impostazione predefinita durante la creazione di questo trigger: Any user e Connection from remote computer . Questo sembra essere quello che vuoi, quindi non devi cambiarla.

Screenshot qui: Schermata del trigger

Origine: Microsoft TechNet: Task Scheduler | Trigger (archiviato qui .)

Ulteriori letture

Quando esporti questa attività e visualizzi all'interno del file, vedrai che questo è un trigger del tipo SessionStateChangeTrigger : Trigger dettaglio C'è una documentazione approfondita su MSDN:

  • MSDN: SessionStateChangeTrigger object (archiviato qui .)
  • MSDN: SessionStateChangeTrigger.StateChange property (archiviato qui .)