Windows 7 Görev Zamanlayıcısı Gizli ayar çalışmıyor


37

Makinemde her saat çalıştığım bir arka plan programı var ve Hiddenkutuyu işaretlememe rağmen çalışmıyor.Görev Özellikleri

Her saat, görev çalışıyor ancak .NET Console uygulamamın çalıştığı siyah komut penceresini gösteriyor. Görev tamamlanana kadar bu görünür durumda kalır ve sonra kaybolur. Bu çok can sıkıcı bir durum çünkü ortaya çıkıyor ve ne yaparsam yapıyorum:

görüntü tanımını buraya girin

Gerçekten gizli olmasını istiyorum, peki bunu nasıl düzeltebilirim?



2
Bağlantılı soru Gizli ayarından bahsetmiyor .
bwDraco

@DragonLord Haklısınız, ancak bu sorunun "Neden Gizli çalışmıyor?" Ya da "Bu kutunun gösterilmesini nasıl durdurabilirim?" Olduğunu söylemek zor.
ᴇcʜιᴇ007

@ techie007: Soru olduğunu ben ne gizli pencere, nasıl düşünce gizli onay kutusu yok. Ancak bu bağlantılı makale, yazılarımda gösterilen görev zamanlayıcısı GUI'sı ile komut dosyaları ve komut satırı görev zamanlayıcısı ve kabuk komutları ile ilgilidir. Bunu başarmak için GUI'nin nasıl kullanıldığını biliyor musunuz?
Joshua Frank

Çoğu durumda, yalnızca Görev Zamanlayıcı GUI'sinden yapamazsınız. Genelde, açılan alt pencereyi gizlemek için görevin Eylemi tarafından çalıştırılanı (örneğin: bir toplu iş dosyası veya komut dosyası) neyin değiştirdiğini değiştirmeniz gerekir. Diğer soru da bunu kapsıyor ve bu yüzden muhtemel bir dupe olarak işaretledim. :)
Ƭᴇcʜιᴇ007

Yanıtlar:


45

"Kullanıcının oturum açıp açmadığını çalıştır" onay kutusunu işaretleyin; çalıştırılabilir dosya arka planda çalışır.


4
Kadar basit. Bu cevap kabul edilen cevap olmalıdır.
rolve

Teşekkür ederim. Ters problemim vardı. Ben istediğim ekrana konsolu, ama değildi!
Randy Stegbauer

12
Bu, görevle parola kaydetmeyi gerektirir ve parola değişikliklerini bir sonraki kapatışınızda gizlice kesilir (genellikle kuruluş ortamlarında etki alanı politikaları tarafından uygulananlar).
Philipp Munin

@PhilippMunin Bazı kullanım durumlarında, 'Parola saklamayın' onay kutusunu işaretleyerek kurtulmanız mümkün olabilir. Görevin yalnızca yerel bilgisayar kaynaklarına erişimi olacak. ”Bu, parola sağlamayı engeller.
Jimadine

20

Windows 7 zamanlanmış görevi neden gizli çalışıyor? Bunun neden olduğunu açıklamalıdır.

Ayrıca, Genel Görev Özellikleri'nin bu TechNet açıklaması şöyle:

Bir görevin genel özellikleri, Görev Özellikleri veya Görev Oluştur iletişim kutusunun Genel sekmesinde görüntülenir. Bir görevin genel özellikleri arasında görev adı, yazar, açıklama, güvenlik seçenekleri, görevin yapılandırıldığı işletim sistemi ve görevin gizli olup olmadığını denetleyen bir özellik bulunur .

Bir görev klasöründe bir görev oluşturduğunuzda, görevi adlandırmanız gerekir. Aynı görev klasöründeyse, iki görevin adı aynı olamaz. Görev açıklaması isteğe bağlıdır.

Görev güvenliği seçenekleri, görevin altında çalıştığı güvenlik bağlamını belirtir. Daha fazla bilgi için, bkz. Görev Güvenliği Bağlantısı.

Varsayılan olarak, gizli görevler Görev Zamanlayıcı kullanıcı arayüzünde gösterilmez. Görünüm menüsünde Gizli Görevleri Göster seçili olduğunda gizli görevleri görüntüleyebilirsiniz. Görev Özellikleri veya Görev Oluştur iletişim kutusunun Genel sekmesindeki Gizli onay kutusunu tıklattığınızda gizli bir görev yaparsınız.

Bu, onay kutusunun , görevin kendisini zamanlayıcının kullanıcı arayüzünden gizlediğini ve planlanan gerçek programı göstermediğini göstermez mi?


Bu şekilde ses çıkarır, ama o da yapmaz; Görevleri Zamanlayıcı'da görebiliyorum. Göremediğiniz nesnelerle çalışan garip bir UI olurdu.
Joshua Frank

2
Eğer var mı Gizli Görevler Görünüm menüsünden kontrol?
Karan

1
Ah, yaptım, bu açıklıyor. Teşekkürler. Tabii ki, "Saklı" düşündüğüm şeyi yapmadığından, saklı işlere ihtiyacım yok Bu yalnızca Yönetici aracı olduğundan ve Yöneticiler genellikle onlardan gizlenen şeyleri sevmediklerinden, gizli bir görev hangi amaca hizmet eder?
Joshua Frank

2
Kim bilir, kesinlikle ben o seçeneği kullanılmış hiç. Sorunuz ilk kez ne yaptığını görmek için aradım. :) BTW, kullanıcıyı SYSTEM olarak değiştirmek yerine, "Kullanıcının oturum açıp açmadığını çalıştır" seçeneğini seçerek sorunu çözdü mü?
Karan,

18

Tamam, biraz daha araştırmadan sonra bu cevabı StackOverflow'ta buldum :

Arka planda çalışacak şekilde Zamanlanmış Görevi ayarlamak için, görevi çalıştıran Kullanıcı'yı SİSTEM olarak değiştirin; ekranınızda hiçbir şey görünmeyecek.

Bir yorum , bunun sinir bozucu olabilecek ancak bu durumda kabul edilebilir olan göreve tam haklar verdiğine işaret eder.

Ama yine de, bunu Hiddenyapmazsa ne yapar ? Ve neden programı çalıştıran kullanıcı hesabının görünür olup olmadığı ile ilgisi var?


Yukarıdaki cevabımı oku, ne yaptığını açıklayabilir.
Karan

2
Bu SU cevabı , çıktıyı da görmemek için farklı bir kullanıcı olarak çalıştırma fikrine değiniyor. Bunu "Sistem" olarak çalıştırmak için belirli bir neden olduğunu sanmıyorum, bir kullanıcıyı sadece bu görevi yürütmek için, onlara vermeyi seçtiğiniz izinlerle yapabilirsiniz.
ᴇcʜιᴇ007

Peki, yapılandırılmış kullanıcı neden pencerenin görünürlüğünü etkiler?
Joshua Frank

1
SYSTEMHesabın diğer kullanıcıların EFS şifreli dosyalarına erişiminin olmadığını unutmayın .
Sıfır3

11

SON ÇÖZÜM

  • Görevi çalıştıran Kullanıcının SİSTEM olarak değiştirilmesi - komutunuzu kullanıcının altında değil yürütecektir
  • "Kullanıcının oturum açıp açamadığını çalıştır" seçeneğinin işaretlenmesi - görevle parola kaydetmeyi gerektirir ve parola değişikliklerinde bir dahaki sefere gizlilik kesmesi gerekir (genellikle kuruluş ortamlarında etki alanı politikaları tarafından uygulananlar)

Bunlar sizin için dağıtıcı ise, nihai çözüm, komutunuzu gizli pencerede çalıştıracak aşağıdaki gibi JS komut dosyası oluşturmaktır, komutunuzun sonlandırılmasını ve hata kodunu döndürmesini bekleyin:

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

Bunu js dosyası (myjob.js) olarak kaydedin ve bunu görev zamanlayıcınıza ekleyin: görüntü tanımını buraya girin Enjoy


Ayrıca, komut dosyanızı çalıştırmak için Cscript'i değil Wscript.exe'yi kullanmalısınız. Aksi takdirde, bir süre siyah konsol penceresi açılabilir.
BBK

İşte benim için çalışan VBScript'in başka bir örneği: faqforge.com/windows/…
BBK

2

"Kullanıcının oturum açıp açmadığını çalıştır" seçeneği gizli seçeneğin çalışmasına izin verecektir. Bunu seçtikten sonra kimlik bilgilerinizi vermeniz gerektiğini unutmayın.


1

Her ikisi de :

  • Görevi çalıştıran kullanıcının SYSTEM olarak değiştirilmesi "
  • ve "Kullanıcının oturum açıp açmadığını çalıştır" seçeneğini işaretleme

siyah komut penceresini engelleyecektir ancak dezavantajların farkında olun: Windows, işleri başsız bir stil ortamında başlattığında, PowerShell'deki 'AutoIt' veya SendKeys gibi bazı GUI otomasyon araçlarıyla çalışamazsınız.


1

Varsayilan ayarlardan ayrilir ve pencereyi göstermeden yürütmeyi saglayan kisa özel programlar yazirim. Örneğin, bir komut istemi penceresi açmadan bir toplu iş dosyasını çalıştırmak için aşağıdaki kodu kullanın. Görevi "RunBatchFile.exe (path_to_batch_file)" oluşturmak üzere ayarlayın.

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
Ve özellikle gizli kılan sihrin özel olarak ProcessWindowStyle.Hiddenporsiyondan kaynaklandığını varsayıyorum , doğru mu? Burada bir şey görüyorum: msdn.microsoft.com/en-us/library/…
Pezevenk Suyu BT

Evet, pencereyi gizleyen budur. Onsuz, pencere açılacaktır.
AresAvatar

1
Bu kod yazıldığı gibi ShellExecute ile çalışan herhangi bir şey üzerinde çalışacaktır.
AresAvatar

0

Bu problemi powershell zamanlanmış görevlerle (GPO aracılığıyla dağıtıyordum) yaşıyordum. Ben bir komut penceresinde sararak sona erdi:

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

Bu soruya cevap verebilse de, neden böyle olduğunu açıklayabilirseniz daha iyi bir cevap olabilir .
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.