PDA

View Full Version : [Win 7] - Operazioni Pianificate - avviare una sola volta all'avvio


Leao
08-01-2014, 13:20
Volevo far partire un programma con le operazioni pianificate ,una sola volta al giorno tutti i giorni,quando accendo il pc, è possbile? Di solito l'accendo alla mattina indicativamente dopo le 8,ho provato a pianificare l'avviato tipo mettendo la partenza alle 5 ,ma vedo che quando avvio il pc l'operazione viene indicata come eseguita,ma nella realtà non lo è,il file non è stato avviato!! Comunque se lo eseguo manualmente(in Operazione pianificate) funziona. Come posso fare?

x_Master_x
08-01-2014, 13:38
Nella scheda "Attivazione" --> "All'accesso" oppure se non funziona "All'avvio", in questo caso si attiverà ad ogni accesso-avvio del PC

Se proprio vuoi impostare un orario ed avere l'attivazione solo una volta, il trigger deve essere successivo a quello di accensione, esempio banale se lo accendi alle 08:00 la task deve essere alle 08:01, oppure 8:15 etc.

Leao
08-01-2014, 14:56
Ciao,premesso che se puo' essere utlile come informazione ho tolto la password, è che vorrei fare in modo che il programma(che è solo un file .bat che modifca SNR del modem) partisse al primo avvio della giornata del pc e basta, e non magari se devo fare dei riavvi del pc in giornata ripartisse tutte le volte... che mettendo come dicevi te all'avvio, farebbe proprio questo.Per quanto riguarda l'orario ecco , non avendone uno fisso siccome accendo il pc tra le 7.30 e le 10 ,non saprei come impostarlo,non mi verrebbe comodo ad esempio avviare l'operazione alle 10.05 sicuro che a quell'ora partirebbe , ma se il pc lo accendo alle 7.30 dovrei aspettare 2h30m . Il programma dovrebbe partirmi solamente alla prima accensione di giornata e a nessun'altro possibile riavvio ,nella stessa giornata.

x_Master_x
08-01-2014, 15:43
Forse potresti avviare la task all'accesso e cancellarla automaticamente ( tramite batch ) e ricrearla quando spegni il pc ( tramite l'Editor dei Gruppi Locali ma dipende dalla versione di Windows, se in start scrivi gpedit.msc appare nel risultato? ) così i riavvii non influiscono e la task si attiva solo quando spegni-accendi il PC

Leao
08-01-2014, 19:15
Speravo in qualcosa di piu' semplice non essendo molto esperto,pero' è un ottima soluzione la tua!! Grazie!! Vedo se riesco a combinare qualcosa poi ti faccio sapere.

x_Master_x
08-01-2014, 19:44
Di nulla, in ogni caso le cose di base da sapere sono:

Per lo script quando spegni il PC, in gpedit è alla voce:
Configurazione Computer\Script (Avvio/Arresto)\Arresto

Per creare una task tramite batch ( da usare con lo script di arresto )

@echo off
schtasks /create /sc ONLOGON /tn "Cartella\Nome_Task" /tr "X:\Percorso\Batch.bat"
ONLOGON = All'accesso
ONSTART = All'avvio

Per eliminarla ( da aggiungere al tuo batch che esegue la modifica SNR del modem, ricordati che devi aggiungere la flag a "Esegui con i privilegi più elevati" in Pianifica Attività )
schtasks /delete /tn "Cartella\Nome_Task"

Leao
08-01-2014, 22:08
Grazie!!! Pero' ho un problema e ci sto diventando mattoooo , il bat. funziona solo se lo eseguo in modalità amministratore(quindi con relativo prompt fastdioso) e funziona bene,mentre se lo avvio normalmente non va mi da
"accesso negato" dalla finestra dos :| ,cosa devo fare per bypassare la modalità admin?

x_Master_x
09-01-2014, 08:00
Sono due i modi:
1) Aggiungere la flag a "Esegui con i privilegi più elevati" in Pianifica Attività nella scheda "Generale". Nella commandline è:
schtasks /create etc. /ru "Username" /rp "Password" /rl highest

oppure in alternativa

2) In Pianifica attività, nella scheda "Generale" clicca su "Cambia utente o gruppo". Scrivi SYSTEM e dai conferma. Non avrai nessuna finestra o avviso perché non sarà il tuo utente ad eseguire la Task. Nella commandline è:
schtasks /create etc. /ru "SYSTEM"

Leao
09-01-2014, 09:27
-Aggiungere la flag a "Esegui con i privilegi più elevati" in Pianifica Attività nella scheda "Generale"

Non riesco a trovarla questa opzione(non so ho win 7 Pro),ho provato a inserire l'opzione "Esegui come amministratiore" nel collegamento "Operazioni Pianificate" in Strumenti Amministrazione" ,ma non funziona.

schtasks /create etc. /ru "Username" /rp "Password" /rl highest[/CODE]]

Ho provato con "/rl highest" da solo e inisieme con /ru "" /rp "" (esattamente cosi scritto) perchè come dicevo prima non usando password non sapevo cosa mettere, comunque non funziona in enrtrambi i casi

In Pianifica attività, nella scheda "Generale" clicca su "Cambia utente o gruppo". Scrivi SYSTEM e dai conferma. Non avrai nessuna finestra o avviso perché non sarà il tuo utente ad eseguire la Task.

Idem come all'inzio,non la trovo cosi'. Pero' trovo "Azione - Configurazione account servizio AT" e poi si apre una finestra che mi che mi dice "Configura l'account utente da utilizzare quando si eseguono attività AT" con 2 opzione "Account Sistema" (che è quella impostata adesso) e "Altro account utente" ,devo cambiare qui?



schtasks /create etc. /ru "SYSTEM"

niente, mi da sempre accesso negato anche cosi'

Ho provato ad azzerare la UAC ,e cosi' funziona tutto benissimo ,pero' preferivo lasciarla o non ho scelta?

x_Master_x
09-01-2014, 13:59
Riattiva l'UAC. Forse è meglio che ti faccio un esempio pratico così non hai più dubbi...

Da CMD eseguito come amministratore ( oppure un .bat eseguito come amministratore, altrimenti avrai l'errore di ACCESSO NEGATO ) scrivi:

schtasks /create /ru "TUO_USERNAME" /rl highest /sc ONLOGON /tn "x_Master_x" /tr "C:\Batch.bat"


Sostituisci x_Master_x con il nome che vuoi
Sostituisci TUO_USERNAME con il tuo nome utente
Sostituisci C:\Batch.bat con il percorso del tuo batch
N.B. Se avessi avuto una password avresti dovuto aggiungere il parametro /rp

Apri l'Utilità di pianificazione, clicca su "Libreria Utilità di pianificazione" e due volte su nome della tua task:
http://i44.tinypic.com/n69f2e.jpg

Questa è la schermata che ti troverai davanti:
http://i43.tinypic.com/2cx9iz7.jpg

C'è la flag a "Esegui con i privilegi più elevati"
Nella scheda "Attivazione" c'è All'accesso ( ONLOGON )
Nella scheda "Azione" c'è Avvio programma --> C:\Batch.bat

Usando questo metodo riesci ad avviare la task usando diritti amministrativi senza prompt UAC.

In alternativa puoi eseguire la Task come SYSTEM, non avrai nessuna finestra o avviso perché non sarà il tuo utente ad eseguire la Task.
Sempre da CMD o .bat eseguito come amministratore:
schtasks /create /ru "SYSTEM" /sc ONLOGON /tn "x_Master_x" /tr "C:\Batch.bat"

Il risultato è:
http://i43.tinypic.com/4iog1x.jpg

Per eliminare le task, sempre con diritti amministrativi:
schtasks /delete /tn "x_Master_x" /f

Per quanto riguarda lo gpedit / script di arresto, devi semplicemente scegliere il .bat che cancella la task come appena illustrato.

Leao
09-01-2014, 15:03
Grazie!! La spiegazione è chiarissima ,in piu' mi hai chiarito alcune cose. Pero' tornando a quello che devo fare io ,non posso fare quella procedura manualmente, per il mio scopo devo automatizzarla appunto con un .bat con il comando schtasks. Ma il grosso problema è che avviando normalmente il file bat , l'operazione non avviane per errore "Accesso Negato". A quanto ho visto il problema sta tutto nel cmd.exe . Avviando normalmente ,quindi senza permessi amministratore,non mi fà eseguire nessun comando schtasks. Mentre se avvio il cmd con "Esegui con diritti di amministratore" ,fila tutto liscio come l'olio. Al che qui spunta il problema ,dovrei fare in modo che il file bat avvia automaticamente il cmd.exe con "diritti di amministratore" per non avere problemi nell'eseguire il comando schtasks.Ma come posso fare? Tasto destro mouse - Proprietà - Compatibilità - "Esegui questo programma come amministratore" non è clikkabile ... Ho provato anche a creare un collegamento al bat e li posso clikkare la casella "Esegui come amministratore" ,pero' poi mi avvia il bat con solito prompt scocciatore in attesa di rispondere si o no. Inoltre ho provato anche a convertire il bat in exe ma niente da fare . Quindi finchè che le cose stanno cosi' il procedimento non è automatizzabile. Riassumendo ho bisogno che il .bat mi avvi il cmd.exe con diritti di ammnistratore senza pero' il prompt che mi bloccherebbe tutto. Almeno non so se ci sono altre soluzione

x_Master_x
09-01-2014, 15:25
Stai confondendo tutto, tu non devi eseguire nulla manualmente...
Cercherò di spiegarmi, ancora una volta:

Il batch del modem, quello che esegui all'avvio, deve avere come ultima stringa la cancellazione della task ( schtasks /delete e tutto il resto )
Devi impostare questa task con la flag "Esegui con i privilegi più elevati" come ti ho mostrato nello screenshot in modo da non avere nessun prompt e-o errori di ACCESSO NEGATO

La task si avvia alla connessione dell'utente e si autocancella. Fino qui é chiaro?

Ora devi creare il .bat per creare la task ( schtasks /create e tutto il resto ) e lo imposti come script di arresto in gpedit, in modo che si autoricrei da solo quando spegni il PC

Done, fine, stop, tutto qui.

Leao
09-01-2014, 20:54
Ciao,sto facendo delle prove ,visto che ho sto trovando problemi nell'avviare lo script del modem ,avro' riavviato 30 volte il pc :cry: . Una volta funziona ,4-5 no , ma forse dovrei avere risolto ritardandone l'avvio di un minuto. Poi seguo la procedura come mi hai indicato ti faccio sapere.

Leao
10-01-2014, 13:28
Evvvaiiiiiiii grandeeeeeeee!!! Funziona tutto quasi perfettamente!!!!!!! Sei un santooooo!!!!! Grazie della pazienzaaaaaaaaa!!! Mi hai fatto quasi diventare un esperto di "operazioni pianificate" (mai usato prima :D ),che tra l'altro mi accorgo che mi vengono bene per altre automazione che invece facevo manualmente ad ogni avvio del pc. Volevo dirti ,non è un grandissimo problema posso tenerlo anche cosi',ma l'unica cosa del procedimento è che lo script di arresto,non si crea solo all'arresto ,ma ad ogni riavvio del pc.C'è qualche opzione o comando da aggiungere?

x_Master_x
10-01-2014, 15:23
Prego, sono contento che ( finalmente ) ci sei riuscito, anche perché non sapevo più come spiegarmi :asd:
Effettivamente hai ragione, lo script di "Arresto" non differenzia tra un Chiudi Sessione ed un Riavvio ed ovviamente non è configurabile, non è una novità che Microsoft si perda in un bicchier d'acqua...

Sudando sono riuscito a fare un batch che differenzia i tipi di shutdown:

:x_Master_x

@echo off
for /f "tokens=6 delims= " %%i in ('wevtutil qe system /c:1 /rd:true /f:text /q:"*[System/EventID=1074]" ^| findstr /c:"Tipo di arresto del sistema"') do set Shutdown_Type=%%i

if ["%Shutdown_Type%"]==["Spegni"] (
mkdir "C:\Spegni"
) else (
mkdir "C:\Riavvia"
)


Sostiusci mkdir "C:\Spegni" con il tuo codice ( schtasks /create etc. ) mentre mkdir "C:\Riavvia" con un semplice:
exit
Utilizzalo come script di Arresto in gpedit, si attiverà in ogni caso ma solo se stai spegnendo il PC creerà la Task, proprio come volevi tu.

Leao
10-01-2014, 20:55
Prego, sono contento che ( finalmente ) ci sei riuscito, anche perché non sapevo più come spiegarmi :asd:

E' lo so,sono un po' gnucco ,ma poi alla fine ci arrivo :asd:

Grazie ancora!!! Oggi sono un stato un po' incasinato,domani lo provo con calma :)

Leao
11-01-2014, 10:15
Funzionaaaaa benissimoooooo!! Perfettooooooooooo!!! :cincin: . Ero incuriosito dalle operazioni pianificate che hanno la possibilità di essere avviate da un evento id .Gli ho dato un occhiata e infatti ho visto che si possono abbinare(anche molto facilmente) gli eventi id dal "visuliizzatore eventi", ma che i processi sia all'arresto che al riavvio sono gli stessi e non si puo' differenziare(tra l'altro vale anche per altre segnalazioni di eventi).Salvo pero' id 1074 che viene segnalato ugualmente sia per il riavvio/arresto ,stesso id ma cambia solo una parolina "Arresto" e "Riavvio" .Non ho capito bene come faccia il tuo script a trovarle e differenziarle ,ma mi sembra faccia proprio questo + o - . Pero' è assurdo che venga data la possibilità di avviare un operazione pianificata tramite un evento......... e poi questo non ha un indentificazione unica , scandoloso come ad ancora a Windows 7. Microsoft come dicevi te ....si perde proprio in un bicchier d'acqua.... :muro: .Non conosco Windows 8 ,ma spero abbiano fatto miglioramente in proposito :D . Ri-grazie ancora di tutto!!
Senti avrei un'altro problemino , pero' non mi va di scocciarti ancora ,sei stato sin troppo gentile e paziente,se non è troppo complicato,eventualmente apro n'altro thread. Riguarda sempre operazioni pianificate. Praticamente avvio un programmino "SpeedFan" (da esecuzione automatica non si avvia) , tramite operazioni pianificate e parte senza nessun problema.L'unica cosa è che questo programmino quando minimizzato mostra la sua icona nella tray bar.Ecco ,il problema è proprio questo avviandolo tramite operazione pianificate avvia il processo ,ma non fa apparire l'icona minimizzata. Se lo avvio da desktop, dopo rimangono in esecuzioni 2 processi.Non riesco a capire come mai funzioni bene ,ma questa icona non venga mostrata.Ho fatto un sacco di ricerche su google ma non trovo niente,mi sembra sin strano che sia un problema solo mio... :fagiano:

x_Master_x
11-01-2014, 11:49
Va bene, ti spiego quest'ultimo paio di cose. Il .bat concettualmente è "semplice", praticamente wevtutil legge il file .xml associato all'evento, findstr cerca la stringa dove c'è la parola "Spegni/Riavvia" cioè "Tipo di arresto del sistema", il token all'inizio "salta" un certo quantitativo di parole per arrivare solo a quella che ci interessa. A quel punto un semplice If...Else ed il gioco è fatto.

Passiamo a SpeedFan, lo vuoi avviare minimizzato nella tray?
Copia queste stringhe in un file di Blocco Note:

Set objShell = WScript.CreateObject("WScript.Shell")
Return = objShell.Run("""C:\Program Files (x86)\SpeedFan\speedfan.exe""", 7, False)

Cambia la path con la tua. I vari parametri di avvio li trovi qui (http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.84).aspx), sotto la voce Remarks
Il 7 è appunto l'avvio minimizzato.

Salvalo come Task.vbs ( l'icona è diversa )


Ora apri Pianifica Attività --> Crea Attività
In "Attivazione" scegli all'avvio del sistema oppure all'accesso dell'utente
Come path principale del programma usi:
%SYSTEMROOT%\system32\wscript.exe
In "Aggiungi argomenti" dovrai mettere la path del file .vbs tra le virgolette, es:
"C:\Users\NOMEUTENTE\Desktop\Task.vbs"
Metti la flag ad:
Esegui con i privilegi più elevati
Clicca OK e conferma tutte le schermate

Leao
11-01-2014, 14:23
Va bene, ti spiego quest'ultimo paio di cose. Il .bat concettualmente è "semplice", praticamente wevtutil legge il file .xml associato all'evento, findstr cerca la stringa dove c'è la parola "Spegni/Riavvia" cioè "Tipo di arresto del sistema", il token all'inizio "salta" un certo quantitativo di parole per arrivare solo a quella che ci interessa. A quel punto un semplice If...Else ed il gioco è fatto.

Grazie della spiegazione , non sapevo gli eventi venissero creati in .xml ,pur non conoscendo i comandi ,adesso è chiarissimo il funzionamento :).


Per lo script di Speedfan ,niente da fare ,l'icona non compare. Ho provato a cambiare il numero con i 1 ,2,8 ma niente . Poi anche ad avviare lo script solo tramite collegamento in "esecuzione automatica" ,ma qui si avvia e mi compare il solito prompt si/no scocciatore"

x_Master_x
11-01-2014, 14:54
É un problema del tuo PC, io ho provato e l'icona compare. Prova a disinstallare-reinstallare il programma e cancellare le cache delle icone con questo .bat

:x_Master_x

@echo off
taskkill /IM explorer.exe /F
del /f /q "%userprofile%\AppData\Local\IconCache.db"
shutdown /r /f /t 00

Leao
11-01-2014, 15:31
Ho fatto tutto come hai detto ,ma niente .Comunque non mi è mai funzionata ne prima ,ne adesso che ho formattato e reinstallato windows da 0,quindi è tutto bello pulito. A sto punto se a te funzione e a me no,devono avermi fatto il malocchio :D

x_Master_x
11-01-2014, 16:12
Sì a me funziona altrimenti non lo avrei scritto, ultima versione scaricata dal sito ufficiale.

Leao
11-01-2014, 17:04
Si,ho disinstallato usando Revo Unistaller per cancellare bene tutto. Va beh dai ,non è un grosso problema lo usato per tanto cosi' :) ,me lo terro' cosi :D . Era giusto solo per aver sott'occhio la temperatura ,ma comunque una volta fatte le regolazione ,lavora tranquillamente da solo. Che dire dai,grazie di tutto, se passi nel lecchese/comasco ti devo almeno offrire da bere,per tutto il disturbo :)

Leao
12-01-2014, 09:52
Ci sono riuscitoooo!! Ci sono riuscitoooooo!! :winner: , mi funziona anche senza script. Pensandoci adesso era proprio una stupidata :muro: . Praticamente bisognava impostrare l'account giusto nel task delle operazioni pianificate,mi spiego meglio.

1)Account normale(quello con cui mi parte normalmente il pc) "nome\.....PC" , se impostato non avendo la password, non risultavo loggato quindi il task non partiva

2)Account "Administrator\.....PC" ,idem come sopra

3)Account "System" , tutto ok ,era quello standard con cui avevo il problema descritto precedentemente.Probabilmente perchè speedfan veniva avviato come servizio secondario

4)Account "Admistrators\.....PC" ,questo è quello con cui adesso mi funziona perfettamente(unica cosa è impostare un ritardo di avvio di 10 secondi,altrimenti speedfan non parte comunque)