Pertanyaan Windows 7 Task Scheduler Pengaturan tersembunyi tidak berfungsi


Saya punya proses daemon yang saya jalankan di komputer saya setiap jam, dan meskipun saya sudah memeriksa Hidden kotak, itu tidak berfungsi.Task Properties

Setiap jam, tugas berjalan, tetapi ini menunjukkan jendela perintah hitam, di mana aplikasi .NET Console saya berjalan. Ini tetap terlihat sampai tugas selesai, dan kemudian menghilang. Ini sangat menjengkelkan, karena muncul dan mengganggu apa pun yang saya lakukan:

enter image description here

Aku benar-benar menginginkannya disembunyikan, jadi bagaimana aku bisa memperbaikinya?


30
2017-09-21 18:29


asal


kemungkinan duplikat dari Hentikan taskeng.exe jendela dari bermunculan - Ƭᴇcʜιᴇ007
Pertanyaan terkait tidak menyebutkan Tersembunyi  pengaturan. - bwDraco
@DragonLord Anda benar, tetapi sulit untuk mengatakan apakah pertanyaan ini adalah "Mengapa tidak Tersembunyi bekerja?", Atau jika sebenarnya "Bagaimana cara menghentikan kotak ini ditampilkan?". - Ƭᴇcʜιᴇ007
@ techie007: Pertanyaannya aku s bagaimana membuat jendelanya tersembunyi, itulah yang saya pikir kotak centang tersembunyi tidak. Tapi artikel terkait itu berhubungan dengan skrip dan penjadwal tugas baris perintah dan skrip shell, bukan penjadwal tugas GUI yang ditampilkan di posting saya. Apakah Anda tahu cara menggunakan GUI untuk mencapai ini? - Joshua Frank
Dalam kebanyakan kasus, Anda tidak dapat melakukannya hanya dari Task Scheduler GUI. Biasanya Anda perlu memodifikasi apa yang sedang dijalankan oleh Action tugas (yaitu: file batch atau skrip) untuk menyembunyikan sub-jendela yang muncul. Itulah yang dibahas oleh pertanyaan lain, dan itulah mengapa saya menandai itu sebagai kemungkinan penipuan. :) - Ƭᴇcʜιᴇ007


Jawaban:


Centang kotak centang "Jalankan apakah pengguna masuk atau tidak" dan dieksekusi akan berjalan di latar belakang.


37
2018-05-23 01:22



Sesimpel itu. Jawaban ini harus diterima. - rolve
Terima kasih. Saya memiliki masalah sebaliknya. saya ingin konsol untuk ditampilkan, tetapi tidak! - Randy Stegbauer
Ini mengharuskan menyimpan kata sandi dengan tugas, dan secara tersembunyi akan memecah perubahan kata sandi waktu berikutnya (yang biasanya diberlakukan oleh kebijakan domain di lingkungan perusahaan). - Philipp Munin


Oke, setelah beberapa penelitian yang saya temukan jawaban ini di StackOverflow:

Untuk mengatur Tugas Terjadwal agar berjalan di latar belakang, ubah Pengguna menjalankan tugas ke SISTEM, dan tidak akan ada yang muncul di layar Anda.

Komentar menunjukkan bahwa ini memberikan hak penuh untuk tugas, yang dapat mengganggu, tetapi dapat diterima dalam kasus ini.

Tapi tetap saja, apa yang terjadi Hidden lakukan, jika tidak melakukan ini? Dan mengapa akun pengguna yang menjalankan program ada hubungannya dengan apakah itu terlihat?


18
2017-09-21 18:55



Baca balasan saya di atas, mungkin menjelaskan apa yang dilakukannya. - Karan
Jawaban SU ini menyentuh ide menjalankannya sebagai pengguna yang berbeda untuk menghindari melihat output juga. Saya tidak berpikir ada alasan khusus untuk menjalankannya sebagai "Sistem", Anda dapat membuat pengguna hanya untuk menjalankan tugas itu, dengan izin yang Anda pilih untuk mengabulkannya. - Ƭᴇcʜιᴇ007
Tapi mengapa pengguna yang dikonfigurasi mempengaruhi visibilitas jendela? - Joshua Frank
Perlu diingat bahwa SYSTEM akun tidak memiliki akses ke file terenkripsi EFS pengguna lain. - Zero3


Mengapa Windows 7 dijadwalkan menjalankan tugas tersembunyi? harus menjelaskan mengapa ini terjadi.

Juga, deskripsi TechNet ini Properti Tugas Umum menyatakan:

Properti umum dari suatu tugas ditampilkan pada tab Umum   Properties Tugas atau Buat kotak dialog Tugas. Sifat-sifat umum   tugas termasuk nama tugas, penulis, deskripsi, keamanan   opsi, sistem operasi yang tugasnya dikonfigurasi untuk, dan a   properti yang mengontrol apakah tugas disembunyikan.

Saat Anda membuat tugas di folder tugas, Anda harus memberi nama tugas. Tidak   dua tugas dapat memiliki nama yang sama jika mereka berada di folder tugas yang sama.   Deskripsi tugas bersifat opsional.

Opsi keamanan tugas menentukan konteks keamanan yang dijalankan tugas   dibawah. Untuk informasi lebih lanjut, lihat Konteks Keamanan Tugas.

Secara default, tugas-tugas tersembunyi tidak ditampilkan dalam pengguna Task Scheduler   antarmuka. Anda dapat melihat tugas-tugas tersembunyi ketika Tampilkan Tugas Tersembunyi adalah   dipilih dalam menu Lihat. Anda membuat tugas tersembunyi ketika Anda mengklik   Kotak centang tersembunyi pada tab Umum dari Properti Tugas atau Buat   Kotak dialog tugas.

Bukankah ini menyiratkan bahwa kotak centang hanya bersembunyi tugas itu sendiri dari UI penjadwal, dan bukan program sebenarnya yang dijadwalkan?


17
2017-09-21 18:55



Itu membuatnya terdengar seperti itu, tetapi tidak melakukan itu juga; Saya bisa melihat tugas di Penjadwal. Ini akan menjadi UI aneh yang bekerja dengan objek yang tidak bisa Anda lihat. - Joshua Frank
Apakah kamu mempunyai Tampilkan Tugas Tersembunyi diperiksa di menu View? - Karan
Ah, saya lakukan, jadi itu menjelaskannya. Terima kasih. Tentu saja, karena "Tersembunyi" tidak melakukan apa yang saya pikir, saya tidak perlu untuk tugas-tugas tersembunyi. Karena ini adalah alat khusus Admin, dan karena Admin biasanya tidak ingin menyembunyikan sesuatu dari mereka, tujuan apa yang ditanggung oleh tugas tersembunyi? - Joshua Frank
Siapa yang tahu, tentu saja saya tidak pernah menggunakan opsi itu. Pertanyaan Anda adalah pertama kalinya saya mencari tahu apa yang terjadi. :) BTW, alih-alih mengubah pengguna menjadi SISTEM, apakah memilih "Jalankan apakah pengguna masuk atau tidak" memecahkan masalah? - Karan


SOLUSI ULTIMATE

  • Mengubah Pengguna menjalankan tugas ke SISTEM - akan menjalankan perintah Anda tidak di bawah pengguna Anda
  • Memeriksa "Jalankan apakah pengguna masuk atau tidak" - mengharuskan untuk menyimpan kata sandi dengan tugas, dan secara tersembunyi akan mematahkan perubahan sandi waktu berikutnya (yang biasanya diberlakukan oleh kebijakan domain di lingkungan perusahaan)

Jika itu deal breaker untuk Anda, solusi utamanya adalah membuat file skrip JS seperti yang ada di bawah ini, yang akan menjalankan perintah Anda di jendela tersembunyi, menunggu perintah Anda untuk mengakhiri dan mengembalikan kode kesalahannya:

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

Simpan ini sebagai file js (myjob.js) dan tambahkan ini ke penjadwal tugas Anda: enter image description here Nikmati


9
2018-02-10 17:29



Juga, Anda harus menggunakan Wscript.exe untuk menjalankan skrip Anda, bukan Cscript. Jika tidak, jendela konsol hitam mungkin akan muncul sebentar. - BBK
Berikut ini contoh lain dari VBScript yang bekerja untuk saya: faqforge.com/windows/… - BBK


"Jalankan apakah pengguna masuk atau tidak" akan memungkinkan opsi tersembunyi untuk bekerja. Perhatikan bahwa Anda perlu memberikan kredensial Anda setelah Anda memilih ini.


2
2018-03-18 03:12





Keduanya:

  • Mengubah Pengguna yang menjalankan tugas ke SISTEM "
  • dan Memeriksa "Jalankan apakah pengguna sudah masuk atau tidak"

akan mencegah jendela perintah hitam, tetapi sadar akan kekurangannya: Anda tidak akan dapat bekerja dengan beberapa alat otomatisasi GUI seperti 'AutoIt' atau SendKeys di PowerShell, saat Windows meluncurkan tugas dalam lingkungan tanpa gaya.


1
2017-09-22 11:47





Saya mengalami masalah ini dengan tugas terjadwal powershell (yang saya deploy melalui GPO). Saya akhirnya membungkusnya di jendela perintah:

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

0
2018-06-02 22:21



Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan beberapa penjelasan Mengapa ia melakukannya. - DavidPostill♦


Saya meninggalkan pengaturan default dan menulis program kustom singkat yang menelurkan eksekusi tanpa menampilkan jendela. Misalnya, untuk menjalankan file batch tanpa memunculkan jendela prompt perintah, gunakan kode di bawah ini. Atur tugas untuk menelurkan "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());
        }
    }
}

0
2018-06-20 21:20



Dan saya menganggap sihir yang membuat disembunyikan secara khusus adalah karena ProcessWindowStyle.Hidden secara khusus, benar? Saya melihat sesuatu tentang itu di sini: msdn.microsoft.com/en-us/library/… - Pimp Juice IT
Ya, itulah yang menyembunyikan jendela. Tanpa itu, jendela akan muncul. - AresAvatar
Kode ini seperti yang tertulis akan bekerja pada apa pun yang berjalan dengan ShellExecute. - AresAvatar