Penjadwal Tugas Windows 7 Pengaturan tersembunyi tidak berfungsi

37

Saya punya proses daemon yang saya jalankan di mesin saya setiap jam, dan meskipun saya sudah mencentang Hiddenkotaknya, itu tidak berhasil.Properti Tugas

Setiap jam, tugas berjalan, tetapi itu 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:

masukkan deskripsi gambar di sini

Saya benar-benar ingin itu disembunyikan, jadi bagaimana saya bisa memperbaikinya?

Joshua Frank
sumber
kemungkinan duplikat dari jendela Stop taskeng.exe agar tidak muncul
Ƭᴇcʜιᴇ007
2
Pertanyaan yang ditautkan tidak menyebutkan pengaturan Tersembunyi .
bwDraco
@DragonLord Anda benar, tetapi sulit untuk mengatakan apakah pertanyaan ini adalah "Mengapa tidak berhasil?", Atau apakah itu sebenarnya "Bagaimana cara menghentikan kotak ini agar tidak muncul?".
Ƭᴇcʜιᴇ007
@ techie007: Pertanyaannya adalah bagaimana membuat jendela disembunyikan, yang saya pikir adalah kotak centang tersembunyi. Tapi artikel terkait itu berhubungan dengan skrip dan penjadwal tugas baris perintah dan skrip shell, bukan GUI penjadwal tugas yang ditunjukkan pada posting saya. Apakah Anda tahu cara menggunakan GUI untuk mencapai ini?
Joshua Frank
Dalam kebanyakan kasus, Anda tidak dapat melakukannya hanya dari GUI Penjadwal Tugas. 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 sebabnya saya menandainya sebagai kemungkinan penipuan. :)
Ƭᴇcʜιᴇ007

Jawaban:

45

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

Pakis
sumber
4
Sesimpel itu. Jawaban ini harus diterima.
putar
Terima kasih. Saya punya masalah sebaliknya. Saya ingin konsol ditampilkan, tetapi ternyata tidak!
Randy Stegbauer
12
Ini mengharuskan Anda untuk menyimpan kata sandi dengan tugas tersebut, dan secara tersembunyi akan merusak kata sandi kali berikutnya (yang biasanya diberlakukan oleh kebijakan domain di lingkungan perusahaan).
Philipp Munin
@ PhilippMunin Dalam kasus penggunaan tertentu, Anda mungkin bisa lolos dengan mencentang kotak centang untuk 'Jangan menyimpan kata sandi. Tugas hanya akan memiliki akses ke sumber daya komputer lokal. ', Yang akan meniadakan penyediaan kata sandi.
Jimadine
20

Mengapa tugas terjadwal Windows 7 berjalan tersembunyi? harus menjelaskan mengapa ini terjadi.

Juga, uraian TechNet tentang Properti Tugas Umum ini menyatakan:

Properti umum dari suatu tugas ditampilkan pada tab Umum dari Properti Tugas atau kotak dialog Buat Tugas. Properti umum dari suatu tugas termasuk nama tugas, penulis, deskripsi, opsi keamanan, sistem operasi yang dikonfigurasikan untuk tugas tersebut, dan properti yang mengontrol apakah tugas tersebut disembunyikan .

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

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

Secara default, tugas tersembunyi tidak ditampilkan di antarmuka pengguna Penjadwal Tugas. Anda dapat melihat tugas tersembunyi saat Perlihatkan Tugas Tersembunyi dipilih di menu Tampilan. Anda membuat tugas tersembunyi ketika Anda mengklik kotak centang Tersembunyi pada tab Umum dari Properti Tugas atau kotak dialog Buat Tugas.

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

Karan
sumber
Itu memang membuatnya seperti itu, tetapi tidak juga melakukannya; Saya bisa melihat tugas di Penjadwal. Ini akan menjadi UI aneh yang bekerja dengan objek yang tidak bisa Anda lihat.
Joshua Frank
2
Apakah Anda sudah memeriksakan Tugas Tersembunyi di menu Tampilan?
Karan
1
Ah, benar, jadi itu menjelaskannya. Terima kasih. Tentu saja, karena "Tersembunyi" tidak melakukan apa yang saya pikirkan, saya tidak perlu tugas-tugas tersembunyi. Karena ini hanya alat Admin, dan karena Admin umumnya tidak suka menyembunyikan sesuatu darinya, tujuan apa yang dilayani oleh tugas tersembunyi?
Joshua Frank
2
Siapa tahu, pasti saya tidak pernah menggunakan opsi itu. Pertanyaan Anda adalah pertama kali saya mencarinya untuk melihat apa yang dilakukannya. :) BTW, alih-alih mengubah pengguna ke SYSTEM, apakah memilih "Jalankan apakah pengguna masuk atau tidak" menyelesaikan masalah?
Karan
18

Oke, setelah penelitian lebih lanjut saya menemukan jawaban ini di StackOverflow:

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

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

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

Joshua Frank
sumber
Baca balasan saya di atas, mungkin jelaskan apa fungsinya.
Karan
2
Jawaban SU ini menyentuh gagasan 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 diberikan kepada mereka.
Ƭᴇcʜιᴇ007
Tetapi mengapa pengguna yang dikonfigurasikan memengaruhi visibilitas jendela?
Joshua Frank
1
Ingatlah bahwa SYSTEMakun tidak memiliki akses ke file terenkripsi EFS pengguna lain.
Zero3
11

SOLUSI ULTIMASI

  • Mengubah Pengguna yang menjalankan tugas ke SISTEM - akan menjalankan perintah Anda bukan di bawah pengguna Anda
  • Memeriksa "Jalankan apakah pengguna masuk atau tidak" - perlu menyimpan kata sandi dengan tugas tersebut, dan akan secara diam-diam memecah perubahan kata sandi lain kali (yang biasanya ditegakkan oleh kebijakan domain di lingkungan perusahaan)

Jika itu adalah pemecah masalah bagi Anda, solusi utamanya adalah membuat file skrip JS seperti di bawah ini, yang akan menjalankan perintah Anda di jendela tersembunyi, tunggu 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: masukkan deskripsi gambar di sini Selamat menikmati

Philipp Munin
sumber
Anda juga harus menggunakan Wscript.exe untuk menjalankan skrip Anda, bukan Cscript. Jika tidak, jendela konsol hitam mungkin muncul sebentar.
BBK
Berikut adalah contoh lain dari VBScript yang berfungsi untuk saya: faqforge.com/windows/…
BBK
2

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

Tran Viet Cuong
sumber
1

Keduanya:

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

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

Gabriel Glenn
sumber
1

Saya meninggalkan pengaturan default dan menulis program kustom pendek yang menelurkan eksekusi tanpa jendela yang menunjukkan. Misalnya, untuk menjalankan file batch tanpa memunculkan jendela command prompt, 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());
        }
    }
}
AresAvatar
sumber
1
Dan saya menganggap sihir yang membuat disembunyikan secara khusus adalah karena ProcessWindowStyle.Hiddenporsinya secara khusus, benar? Saya melihat sesuatu tentang ini di sini: msdn.microsoft.com/en-us/library/…
Pimp Juice IT
Ya, itulah yang menyembunyikan jendela. Tanpa itu, jendela akan muncul.
AresAvatar
1
Kode ini seperti ditulis akan bekerja pada apa pun yang berjalan dengan ShellExecute.
AresAvatar
0

Saya mengalami masalah dengan tugas terjadwal PowerShell (yang saya gunakan melalui GPO). Saya akhirnya membungkusnya di jendela perintah:

CMD
/Q /D /C "powershell.exe -Command "& '\\MYDOMAIN\netlogon\MyPowerShellScript.ps1'""
Berwin22
sumber
Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan penjelasan mengapa itu bisa terjadi.
DavidPostill