L'utilità di pianificazione di Windows 7 Hidden non funziona


37

Ho un processo daemon che eseguo sul mio computer ogni ora e anche se ho selezionato la Hiddencasella, non funziona.Proprietà dell'attività

Ogni ora, l'attività viene eseguita, ma mostra la finestra di comando nera, in cui è in esecuzione la mia app .NET Console. Questo rimane visibile fino al completamento dell'attività, quindi scompare. Questo è molto fastidioso, perché si apre e interrompe tutto ciò che sto facendo:

inserisci qui la descrizione dell'immagine

Lo voglio davvero nascosto, quindi come posso risolvere questo problema?



2
La domanda collegata non menziona l' impostazione Nascosto .
bwDraco,

@DragonLord Hai ragione, ma è difficile dire se questa domanda è "Perché Hidden non funziona?", O se in realtà è "Come posso impedire la visualizzazione di questa casella?".
Ƭᴇcʜιᴇ007,

@ techie007: La domanda è come rendere nascosta la finestra, che è quello che pensavo facesse la casella di controllo nascosta. Ma l'articolo collegato riguarda gli script, l'utilità di pianificazione della riga di comando e gli script di shell, non la GUI dell'utilità di pianificazione mostrata nel mio post. Sai come utilizzare la GUI per raggiungere questo obiettivo?
Joshua Frank,

Nella maggior parte dei casi non è possibile farlo solo dalla GUI di Utilità di pianificazione. Di solito è necessario modificare ciò che viene eseguito dall'azione dell'attività (ovvero: un file batch o uno script) per nascondere la finestra secondaria che viene visualizzata. Questo è quello che copre l'altra domanda, ed è per questo che l'ho contrassegnato come possibile duplicato. :)
Ƭᴇcʜιᴇ007,

Risposte:


45

Seleziona la casella di controllo "Esegui se l'utente è connesso o meno" e l'eseguibile verrà eseguito in background.


4
Così semplice. Questa risposta dovrebbe essere quella accettata.
1313

Grazie. Ho avuto il problema opposto. Ho voluto la console per visualizzazione, ma non è stato!
Randy Stegbauer,

12
Ciò richiede il salvataggio della password con l'attività e interromperà in modo nascosto le modifiche alla password successive (ciò che di solito viene applicato dai criteri di dominio negli ambienti aziendali).
Philipp Munin,

@PhilippMunin In alcuni casi d'uso, potresti essere in grado di cavartela spuntando la casella "Non memorizzare la password. L'attività avrà accesso solo alle risorse del computer locale ", che eviterebbe di fornire la password.
Jimadine,

20

Perché l'attività pianificata di Windows 7 è in esecuzione nascosta? dovrebbe spiegare perché questo accade.

Inoltre, questa descrizione TechNet delle proprietà generali dell'attività indica:

Le proprietà generali di un'attività sono visualizzate nella scheda Generale della finestra di dialogo Proprietà attività o Crea attività. Le proprietà generali di un'attività includono il nome dell'attività, l'autore, la descrizione, le opzioni di sicurezza, il sistema operativo per il quale l'attività è configurata e una proprietà che controlla se l'attività è nascosta .

Quando si crea un'attività in una cartella di attività, è necessario assegnare un nome all'attività. Nessuna attività può avere lo stesso nome se si trova nella stessa cartella attività. La descrizione dell'attività è facoltativa.

Le opzioni di sicurezza dell'attività specificano il contesto di sicurezza in cui viene eseguita l'attività. Per ulteriori informazioni, consultare Contesto di sicurezza delle attività.

Per impostazione predefinita, le attività nascoste non vengono visualizzate nell'interfaccia utente di Utilità di pianificazione. È possibile visualizzare le attività nascoste quando Mostra attività nascoste è selezionato nel menu Visualizza. Si rende nascosta un'attività quando si fa clic sulla casella di controllo Nascosta nella scheda Generale della finestra di dialogo Proprietà attività o Crea attività.

Ciò non implica che la casella di controllo nasconde l'attività stessa dall'interfaccia utente dello scheduler e non dal programma effettivo pianificato?


Lo fa sembrare così, ma non lo fa neanche; Posso vedere le attività nello Scheduler. Sarebbe una strana UI che funzionava con oggetti che non si potevano vedere.
Joshua Frank,

2
Hai selezionato Mostra attività nascoste selezionato nel menu Visualizza?
Karan,

1
Ah, l'ho fatto, quindi questo lo spiega. Grazie. Naturalmente, poiché "Nascosto" non fa ciò che pensavo, non ho bisogno di compiti nascosti. Dal momento che si tratta di uno strumento di sola amministrazione e dal momento che agli amministratori in genere non piace avere cose nascoste, a quale scopo serve un'attività nascosta?
Joshua Frank,

2
Chissà, certamente non ho mai usato questa opzione. La tua domanda è stata la prima volta che l'ho vista per vedere cosa ha fatto. :) A proposito, invece di cambiare l'utente in SISTEMA, selezionando "Esegui se l'utente è connesso o meno" risolve il problema?
Karan,

18

Ok, dopo qualche altra ricerca ho trovato questa risposta su StackOverflow:

Per impostare un'attività pianificata per l'esecuzione in background, modificare l'utente che esegue l'attività su SISTEMA e sullo schermo non verrà visualizzato nulla.

Un commento sottolinea che ciò garantisce pieni diritti all'attività, che potrebbe essere fastidioso, ma è accettabile in questo caso.

Ma comunque, cosa fa Hiddense non lo fa? E perché l'account utente che esegue il programma dovrebbe avere a che fare con la sua visibilità?


Leggi la mia risposta sopra, potrebbe spiegare cosa fa.
Karan,

2
Questa risposta SU tocca l'idea di eseguirla come un altro utente per evitare di vedere anche l'output. Non credo che ci sia un motivo specifico per eseguirlo come "Sistema", potresti creare un utente solo per eseguire quell'attività, con le autorizzazioni che scegli di concedergli.
Ƭᴇcʜιᴇ007,

Ma perché l'utente configurato dovrebbe influire sulla visibilità della finestra?
Joshua Frank,

1
Tieni presente che l' SYSTEMaccount non ha accesso ai file crittografati EFS di altri utenti.
Zero3

11

LA SOLUZIONE MASSIMA

  • La modifica dell'utente che esegue l'attività su SISTEMA - eseguirà il comando non sotto l'utente
  • Verifica "Esegui se l'utente è connesso o meno" - richiede di salvare la password con l'attività e interromperà in modo nascosto le modifiche alla password successiva (ciò che di solito viene applicato dai criteri di dominio negli ambienti aziendali)

Se quelli sono rompiscatole per te, la soluzione definitiva è quella di creare il file di script JS come quello qui sotto, che eseguirà il tuo comando in una finestra nascosta, attendi che il tuo comando termini e restituisca il suo codice di errore:

WScript.CreateObject("WScript.Shell")
.Run('powershell -File C:\\Path\\To\\MyScript.ps1', 0,true);

Salvalo come file js (myjob.js) e aggiungilo al tuo programma di pianificazione: inserisci qui la descrizione dell'immagine Divertiti


Inoltre, dovresti usare Wscript.exe per eseguire il tuo script, non Cscript. Altrimenti, la finestra della console nera potrebbe apparire per un momento.
BBK,

Ecco un altro esempio di VBScript che funziona per me: faqforge.com/windows/…
BBK

2

"Esegui se l'utente è connesso o meno" consentirà all'opzione nascosta di funzionare. Si noti che è necessario fornire le credenziali dopo aver scelto questo.


1

Tutti e due :

  • Modifica dell'utente che esegue l'attività su SYSTEM "
  • e Verifica "Esegui se l'utente è connesso o meno"

impedirà la finestra di comando nera, ma fai attenzione agli svantaggi: non sarai in grado di lavorare con alcuni strumenti di automazione della GUI come 'AutoIt' o SendKeys in PowerShell, poiché Windows avvia le attività in un ambiente di stile senza testa.


1

Lascio le impostazioni predefinite e scrivo brevi programmi personalizzati che generano l'esecuzione senza mostrare una finestra. Ad esempio, per eseguire un file batch senza visualizzare una finestra del prompt dei comandi, utilizzare il codice seguente. Impostare l'attività su spawn "RunBatchFile.exe (path_to_batch_file)".

class Program
{
    static void Main(string[] args)
    {
        try
        {
            if (args.Length < 1)
            {
                Console.WriteLine("No batch file");
                Console.WriteLine("Usage: RunBatchFile (path)");
                Environment.Exit(1);
            }

            if (!File.Exists(args[0]))
            {
                Console.WriteLine("Batch file {0} not found", args[0]);
                Console.WriteLine("Usage: RunBatchFile (path)");
                Environment.Exit(1);
            }

            // Set to batch file's folder
            string startIn = Path.GetDirectoryName(args[0]);
            if (!string.IsNullOrEmpty(startIn) && Directory.Exists(startIn))
                Directory.SetCurrentDirectory(startIn);

            // Start
            ProcessStartInfo pi = new ProcessStartInfo()
            {
                FileName = args[0],
                UseShellExecute = true,
                WindowStyle = ProcessWindowStyle.Hidden
            };
            Process.Start(pi);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception: " + ex.ToString());
        }
    }
}

1
E presumo che la magia che rende nascosta sia dovuta specificamente alla ProcessWindowStyle.Hiddenporzione, giusto? Vedo qualcosa al riguardo qui: msdn.microsoft.com/en-us/library/…
Pimp Juice IT

Sì, questo è ciò che nasconde la finestra. Senza di essa, la finestra si aprirà.
AresAvatar,

1
Questo codice come scritto funzionerà su tutto ciò che viene eseguito con ShellExecute.
AresAvatar,

0

Stavo riscontrando questo problema con le attività pianificate PowerShell (che stavo distribuendo tramite GPO). Ho finito per avvolgerlo in una finestra di comando:

CMD
/Q /D /C "powershell.exe -Command "& '\\MYDOMAIN\netlogon\MyPowerShellScript.ps1'""

Sebbene ciò possa rispondere alla domanda, sarebbe una risposta migliore se tu potessi fornire qualche spiegazione sul perché lo faccia.
David Post
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.