task scheduler – avvio automatico programmi amministratore

Vuoi avviare un programma come amministratore all’avvio della sessione?

Per fare questo è necessario utilizzare il Task Scheduler o Utilità di Pianificazione, che ci permetterà di svolgere svariate attività come creare attività ricorrenti, ascoltare un evento, attivarsi in caso di inattività o in caso di login di un utente.

È possibile creare un nuovo evento sia dall’interfaccia grafica sia da cmd, andremo a vedere entrambe le modalità, in più anche come svolgere questa attività da C#.

<!- -more- ->

Per avviare l’interfaccia grafica vai su Start, digita: task e premi invio.

A destra clicca sulla voce “Crea una nuova attività di base…” Inserisci un nome al nuovo task e nella schermata successiva spunta “All’accesso dell’utente“.

Imposta l'avvio all'accesso degli utenti

Imposta l’avvio all’accesso degli utenti

Fatto ciò date Avanti/Ok/Salva e tutto quello che vuole, quindi andate a riaprire le proprietà dell’elemento appena creato, spostatevi sulla tab “Condizioni” e sotto alimentazione rimuovere “Avvia l’attività solo se il computer è alimentato a rete elettrica“.

Perché questo?

Da notare che la funzionalità per l’alimentazione NON è presente tra gli argomenti da cmd ma solo da interfaccia! Più avanti nell’articolo mostrerò come aggirare questa limitazione

 

Per creare un task da cmd è sufficiente richiamare schtasks e passare qualche parametro, come si vede nell’esempio

Per aggiungere un avvio pianificato con C# basta richiamare schtasks in modo analogo

Analizzando la stringa si nota che

  • SC ONLOGON è l’evento che attiverà il task
  • TN rappresenta il nome del nostro elemento
  • TR è l’applicazione da aprire
  • (opzionale) DELAY impostato su 1 minuto (formato mmmm:ss)
  • (opzionale) RL HIGHEST indica che saranno richiesti i permessi più elevati disponibili
    Nota che se i permessi non soddisfano il minimo richiesto dall’applicazione questa non verrà eseguita
  • (opzionale) F indica che il comando è forzato e sovrascriverà senza conferma in caso esista già un elemento con lo stesso nome

Come rimuovere un task

Per rimuovere il task da cmd

Per rimuovere il task da C# il procedimento è lo stesso

Come verificare se il task esiste?

Semplice, da cmd verrà stampato a video il risultato

Per nostra fortuna, schtasks ha un valore di ritorno così da porter capire cosa succede

Ci sarà ritornato 0 in caso di risultati e 1 in caso non abbia trovato corrispondenze.

Piccolo intoppo

Come già anticipato all’inizio dell’articolo, schtasks non permette di rimuovere la limitazione a rete elettrica tramite console, per ovviare è necessario procedere in una di queste modalità:

  • Preconfigurare il nostro task da interfaccia per poi esportarlo come XML ed utilizzarlo come template
  • Crearlo da comando, esportarlo, modificarlo e poi ricaricarlo

Come prima opzione richiamiamo la funzione di creazione da xml

Chiaramente XMLFileName è il percorso del file XML esportato che sarà simile a questo

Nota che è possibile rimuovere i campi <Author><URI> e <UserId> senza problemi. Il tag <Delay>PT1M</Delay>  indica 1 minuto di ritardo, come nei primi esempi.

Se invece volessimo esportarlo, ritorniamo ad utilizzare /Query e cerchiamolo per nome, quindi l’output verrà salvato su un percorso a nostro piacimento

Da tenere presente che per modificare i valori del Task Scheduler è necessario ottenere i permessi da amministratore!

In caso aveste bisogno di maggiore controllo o complessità vi mando a questo progetto, non ho avuto ancora modo di provarlo ma sembra molto completo

cya

 

Potrebbero interessarti anche...