Taskeng.exe penceresinin açılmasını durdur


18

Windows 7 ortamımda, özellikle arka planda çalışması gereken yedeklemeler için planlanmış birkaç işlemim var.

Ancak, sessizce arka planda çalışmak yerine, görev zamanlayıcı siyah (konsol gibi) "taskeng.exe" penceresi açılır. Pencere diğer tüm pencerelerin önüne geçer. Neyse ki klavye odağımı çalmıyor, ancak her şeyin görünümünü engelliyor.

taskeng.exe

Bu pencereden kaçınmanın bir yolu var mı - ya da en azından GÖRSEL odağımı çalmadan arka planda görünmesi mi?

Ödül uygulandıktan sonra düzenlenen örnek:

WScript öğelerini (RunSignatured.bat adlı bir dosyada) kullanmaya yönelik son denemem:

Set Shell = CreateObject("WScript.Shell")
Shell.Run C:\Users\danh\Bin\signatured.bat, 0, False

Signatured.bat dosyası şunları içerir:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature

Vista SP2'de çalışan ve diğer araçları yüklemeden çalışan ve Görev Zamanlayıcı'dan basit (ama sürekli çalışan - zamanlayıcı) bir Java uygulaması yürütecek bu soruna bir çözüm arıyorum. Kurulumum hosed olmadan bir şekilde bu şekilde çalışırdım ama şimdi kutumu geri yüklediğim (bir çeşit) şimdi nasıl yapılacağını anlayamıyordum. (WshShell şemasını çalıştırmadım - hedef yarasa dosyası görünüşte asla çalışmıyor (veya herhangi bir nedenle hemen öldürülüyor).)
Daniel R Hicks

(Java programının kendi dahili zamanlayıcı döngüsü vardır, yani başlatıldıktan sonra çalışmaya devam eder.)
Daniel R Hicks

@DanielRHicks bu SU çözümünün size yardımcı olabileceğini kontrol edin .
avirk

Görev tarafından çalıştırılan gerçek komutu sağlayabilir misiniz?
Sepcʜιᴇ007

@ techie007 - Düzenleme onaylandıktan sonra yukarıya bakın.
Daniel R Hicks

Yanıtlar:


8

Daha spesifik olarak Daniel R Hicks'in ödülüne / örneğine, ancak orijinal soruna hala uygulanabileceğini düşünüyorum:

Görev Zamanlayıcı'dan başlatılan bir toplu iş dosyasıysa, toplu iş dosyasını simge durumuna küçültülmüş / görünmez başlatmak yerine, muhtemelen komut dosyalarını görünmez bir şekilde çalıştırmak için toplu iş dosyasının kendisini de değiştirmeniz gerekir.

Öyleyse değiştirin:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature

Gibi bir şeye:

cd C:\Users\danh\bin
start /b "C:\Program Files\Java\jre7\bin\java.exe" Signature

Veya toplu iş dosyasını tamamen ortadan kaldırın ve doğrudan Görev Zamanlayıcı'dan başlattığınız (VBS) komut dosyasından her şeyi yapın.

Gibi bir şey:

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin" 
Shell.Run "C:\Program Files\Java\jre7\bin\java.exe Signature", 0, False

DanH tarafından uygulanan çözüm, techie007'nin önerilerine yanıt olarak, ödülün tatmin edilmesi:

Aşağıdakileri içeren RunSignatured.vbs adlı bir dosya:

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin" 
Shell.Run "java.exe Signature", 0, False

Tam yol belirtilirken, teknik Program Dosyalarındaki boşlukla çalışmadığından, yukarıdaki yolun java.exe dosyasının yolunda olduğuna dikkat edin. Hiç şüphe yok ki, bu soruna geçici bir çözüm bulmak için başka yollar vardır, ama bu başkaları keşfetmek için.

Ardından RunSignature.vbs, Görev Zamanlayıcı'daki "Eylem" e "program / komut dosyası" adı olarak ekleyin .


1
start /bYaklaşımın birçok varyasyonunu denedim . Pencereyi ortadan kaldıran bir şey yok - sanırım yarasa dosyasını yürütmeye başladığınızda yaratıldı, bu yüzden o zamana kadar çok geç.
Daniel R Hicks

İkinci yaklaşım için, doğrudan çalıştırmayı denediğimde (dosyayı çift tıklatarak) "Satır: 3 Hatası: Sistem belirtilen dosyayı bulamıyor."
Daniel R Hicks

Bu tam olarak test edilmemiş bir kod örneğiydi. ;) Java.exe sağlanan yolda var mı? Java.exe bazen bazı tuhaf tuhaflıklar olabilir gibi, belki "notepad.exe" gibi basit bir şey başlatmak ile test edin.
Sepcʜιᴇ007

(Yol adındaki boşlukla ilgili soruna dikkat edin - bununla nasıl başa çıkılacağı açık değildir.)
Daniel R Hicks

(Ama yolu kaldırmak işe yarıyor gibi görünüyor! Görünüşe göre javaarama yoluna giriyor Tamam.)
Daniel R Hicks

4

Zamanlanan görevleri farklı bir kullanıcı olarak çalıştırabilirsiniz, böylece normal hesabınızın etkileşimli masaüstüyle hiç etkileşime girmezler. Bu kesinlikle yönettiğim Windows2003 sunucularında çalışıyor gibi görünüyor. Dosya izinlerinin ve diğer kimlik doğrulama ayrıntılarının, görevlerin bu farklı kullanıcı olarak kullanıldığında ihtiyaç duydukları şeye erişebileceği şekilde ayarlandığından emin olun.

Düzenleme: Veya doğrudan bir konsol aracı çalıştırmak yerine "küçültmek, hiçbir odak değişikliği" seçeneği ile WScript.Shell.Run kullanarak çalıştıran küçük bir komut dosyası olabilir:

' sample script: c:\scripts\test.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "c:\location\of\tool\utility.exe", 7

daha sonra wscript c:\scripts\test.vbsaracı doğrudan çağırmak yerine görev zamanlayıcıyla (komut satırı gibi bir şey ) çalıştırın. Toplu iş dosyalarını ve diğer komut dosyalarını da bu şekilde çağırabilirsiniz. Ayrıca, "tamamen gizleme" seçeneği de vardır (yukarıdaki 7'yi 0 ile değiştirin), ancak her iki durumda da gizle / küçült yalnızca ilk pencereyi kontrol eder: araç daha fazla açılırsa, daha önce olduğu gibi yine de odağı çalabilir.

Çalıştırma yöntemi için seçeneklerin tam listesi için http://msdn.microsoft.com/tr-tr/library/d5fk67ky%28VS.85%29.aspx adresine bakın .


Korkarım bu mümkün değil çünkü bazı görevler için kerberos kimlik bilgilerime ihtiyacım var.
BlaM

Görevi dolaylı olarak çalıştırmayı ve bir görevin ilk penceresinin nasıl sunulduğunu kontrol etmenizi sağlayan windows komut dosyası ana bilgisayarının çalıştırma yöntemini kullanmayı deneyebilirsiniz. Bkz. Düzenleme.
David Spillett

Benzer bir soru, aynı cevabı vbs kullanmak için: serverfault.com/questions/9038/…
Anthony Hatzopoulos

3

Zamanlanmış görevinizi şu şekilde çalıştırmayı deneyin:

C: \ Windows \ System32 \ cmd.exe / c start /bc:\fullpath\mybackup.bat

start /bYeni bir pencere oluşturmadan uygulamayı başlamalıdır.

Bu işe yaramazsa, taskeng.exe penceresini gizleyecek bağımsız bir AutoIt komut dosyası oluşturabilirsiniz. AutoIt komut dosyaları bir .exe dosyasına derlenebilir.

.Exe, mybackup.bat dosyanızdaki ilk satır olacaktır. AutoIt kodu şöyle görünecektir:

WinSetState ("taskeng", @SW_HIDE)

1
Çalışmıyor gibi görünüyor.
Daniel R Hicks

1
Sonunda benim için çalışan bir çözüm! Ancak yalnızca yeniden başlatmadan sonra.
Fabian Röling

btw, c: \ Windows \ System32 \ cmd.exe yapmak yerine, kullanılan komut istemi yorumlayıcısına ayarlanmış% COMSPEC% 'yi yapabilirsiniz. Daha fazla bilgi için bkz. En.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse


2

Görev Zamanlayıcı'dan başlatılan bir uygulamayı gizlemenin en basit yolu, uygulamayı "Kullanıcının oturum açmış olup olmadığını çalıştır" olarak ayarlamaktır. Bu ayar Zamanlanmış Görev Özelliklerinin Genel Sekmesinde bulunabilir.


1

İşte kullandığım SyncToy betiği. Dosya konumu çevresindeki birden fazla alıntıya dikkat edin:

' SyncToy Scheduler
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\SyncToy 2.1\SyncToyCmd.exe"" -R" ,7

0

Görünüşe göre SQLyog Job Agent'ın yürütülmesini zamanlayan SQLyog MySQL GUI'yi kurdunuz . Kendini saklamaya çalışmayan bir konsol uygulaması gibi görünüyor.

SQLyog'a gönderme yapan bir görev için Görev Zamanlayıcı'ya bakmalı ve girdisini düzeltmelisiniz. Bir cmd çağrısı /bise, parametre listesine eklemeyi deneyin . Sadece çalıştırılabilir bir çağrı ise, bu cevabım ışığında onu düzeltebilirsiniz .

Bu girişi bulmakta zorlanıyorsanız, SQLyog'un nasıl başlatıldığını bulmak autoruns komutunu kullanın. Ayrıca SQLyog'un tüm belirtilerini veya kurulum dizininin adı ne olursa olsun regedit'i kullanabilirsiniz.

Tabii ki ihtiyacınız yoksa SQLyog MySQL GUI'yi de kaldırabilirsiniz.

SQLyog MySQL GUI yüklemediyseniz, bilgisayarınıza virüs bulaşmış olabilir. Açılan pencerenin ne zaman göründüğünü doğrulamak, sistem32'den taskeng.exe veya Taskeng.exe'nin Look alikes'lerinden biri olup olmadığını görmek için Process Monitor'ü kullanabilirsiniz .


Zaten başka bir cevapta yayınlandı, işe yaramıyor gibi görünüyor .
Tamara Wijsman

@TomWijsman: Eğer "/ b" kısmına atıfta bulunursanız, sadece bütünlük için dahil ettim.
harrymc

0

bazı araştırma yaptıktan sonra SQLyog kullanarak tam sorun yaşıyordum denilen invisible.vbsve bu kodu ekleyerek bir dosya oluşturma sabit :

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\Program Files (x86)\SQLyog\"
WshShell.Run "SJA.exe C:\Users\REPLACE_UR_USER\Desktop\test.xml -lC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sja.log -sC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sjasession.xml ", 0

Daha sonra invisible.vbsdosyayı çalıştırmak için bir Görev Zamanlayıcı oluşturun ve hepsi bu kadar!

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.