阻止taskeng.exe窗口弹出


18

我在Windows 7环境中安排了几个进程,主要用于备份,这些进程应该在后台运行。

但是,任务调度程序不只是在后台安静地工作,而是弹出一个黑色的(类似于控制台)“ taskeng.exe”窗口。该窗口位于所有其他窗口的前面。幸运的是,它并没有夺走键盘的注意力,但是却挡住了所有事物的视线。

执行任务

有没有一种方法可以避免出现此窗口-或者至少在不窃取我的VISUAL焦点的情况下将其显示在背景中?

应用赏金后编辑的示例:

这是我最后一次使用WScript东西的尝试(在名为RunSignatured.bat的文件中):

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

signature.bat文件包含:

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

我正在寻找解决此问题的解决方案,该解决方案可以在Vista SP2上运行而无需安装其他工具,并且可以从Task Scheduler执行一个简单的(但连续运行-在计时器上运行)Java应用程序。在安装之前,我曾经以某种方式使此工作正常进行,但是由于我已经恢复了(某种程度上)盒子,所以无法弄清楚该如何做。(我尚未获得WshShell方案的支持,目标bat文件显然从未运行(或由于某种原因立即被杀死)。)
Daniel R Hicks 2012年

(Java程序具有其自己的内部计时器循环,这意味着它在启动后仍会继续运行。)
Daniel R Hicks 2012年

@DanielRHicks签出此SU解决方案可能会对您有所帮助。
avirk 2012年

您能否提供由Task运行的实际命令?
Ƭᴇcʜιᴇ007

@ techie007-一旦批准编辑,请参见上文。
Daniel R Hicks 2012年

Answers:


8

更具体地说,是Daniel R Hicks的赏金/示例,但我认为仍然可以将其应用于原始问题:

如果这是从Task Scheduler启动的批处理文件,则可能不仅仅启动最小化/不可见的批处理文件,还可能需要修改批处理文件本身以使其在运行时不可见。

所以改变:

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

像这样:

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

或者,也许完全消除了批处理文件,只需要直接从任务计划程序启动的(VBS)脚本中执行所有操作即可。

就像是:

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为响应techie007的建议而实施的解决方案,该赏金得到了满足:

一个名为RunSignatured.vbs的文件,其中包含:

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

请注意,以上内容依赖于java.exe在路径中,因为当指定完整路径时,该技术不适用于程序文件中的空白。毫无疑问,有其他方法可以解决此问题,但这是其他人可以发现的。

然后RunSignature.vbs在“任务计划程序”的“操作”中添加“程序/脚本”名称。


1
我尝试了多种start /b方法。似乎没有什么可以消除该窗口的-我认为它是在您开始执行bat文件时创建的,所以那时为时已晚。
Daniel R Hicks 2012年

对于第二种方法,当我尝试直接运行它(通过双击文件)时,出现“行:3错误:系统找不到指定的文件”。
Daniel R Hicks 2012年

那是一个示例,未经完全测试的代码。;)在提供的路径中是否存在java.exe?也许通过启动“ notepad.exe”之类的简单程序进行测试,因为java.exe有时可能会有一些奇怪的怪癖。
Ƭᴇcʜιᴇ007

(请注意路径名中存在空格的问题-不清楚如何处理。)
Daniel R Hicks

(但是删除路径似乎可行!显然java可以直通搜索路径。)
Daniel R Hicks

4

您可以以其他用户身份运行计划任务,这样它们就不会与普通帐户的交互桌面进行交互。当然,这似乎可以在我管理的Windows2003服务器上使用。请注意确保设置了文件许可权和其他身份验证详细信息,以使任务可以在以其他用户身份访问时访问所需的内容。

编辑:或者,或者直接运行控制台工具,也可以使用WScript.Shell.Run(具有“最小化,无需更改焦点”)选项运行一个小脚本:

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

然后使用任务计划程序(命令行类似wscript c:\scripts\test.vbs)运行它,而不是直接调用该工具。您也应该能够以这种方式调用批处理文件和其他脚本。还有一个“完全隐藏”选项(将上面的7替换为0),尽管在这两种情况下,隐藏/最小化都仅控制初始窗口:如果工具本身打开得更多,则它们可能仍会像以前一样抢走焦点。

有关运行方法选项的完整列表,请参见http://msdn.microsoft.com/zh-cn/library/d5fk67ky%28VS.85%29.aspx


恐怕这是不可能的,因为我需要我的kerberos凭据才能完成某些任务。
BlaM 2010年

您可以尝试间接运行任务,并使用Windows脚本宿主的run方法,该方法允许您控制如何显示任务的初始窗口。参见编辑。
David Spillett 2010年

类似的问题,用同样的答案使用VBS:serverfault.com/questions/9038/...
安东尼HATZOPOULOS

3

尝试像这样运行计划的任务:

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

会在start /b不创建新窗口的情况下启动应用程序。

如果这不起作用,则可以创建一个独立的AutoIt脚本,该脚本将隐藏taskeng.exe窗口。AutoIt脚本可以编译为.exe。

.exe将是mybackup.bat文件中的第一行。AutoIt代码如下所示:

WinSetState(“ taskeng”,@SW_HIDE)

1
似乎不起作用。
Daniel R Hicks 2012年

1
最终,一个对我有用的解决方案!但只有在重启之后。
法比安·罗林(FabianRöling)

顺便说一句,您可以只执行%COMSPEC%,而不是执行c:\ Windows \ System32 \ cmd.exe,它已设置为使用的命令提示符解释器。有关更多信息,请参见:en.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse


2

隐藏从任务计划程序启动的应用程序的最简单方法是将其设置为“无论用户是否登录都运行”。可以在“计划任务属性”的“常规”选项卡中找到此设置。


1

这是我使用的SyncToy脚本。请注意文件位置周围的多个引号:

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

0

显然,您已经安装了SQLyog MySQL GUI,它已计划执行 SQLyog Job Agent。看起来它是一个控制台应用程序,不会尝试隐藏自身。

您应该在“任务计划程序”中查找引用SQLyog的任务,并更正其条目。如果是cmd调用,请尝试添加/b到参数列表中。如果这只是对可执行文件的调用,则可以根据我的回答对它进行更正 。

如果你有麻烦定位此项目,使用自动运行,找到SQLyog的启动方式。您也可以使用regedit搜索所有提及的SQLyog或其安装目录的名称。

当然,如果不需要,您也可以卸载SQLyog MySQL GUI。

如果您尚未安装SQLyog MySQL GUI,则您的计算机可能已被感染。您可以使用Process Monitor验证弹出窗口何时出现,以查看它是system32中的taskeng.exe还是Taskeng.exe的相似外观之一


已经张贴在另一个答案中,似乎不起作用
Tamara Wijsman 2012年

@TomWijsman:如果您引用“ / b”部分,则出于完整性考虑,我仅将其包括在内。
harrymc 2012年

0

经过一些研究后,我在使用SQLyog时遇到了确切的问题,我修复了该问题,创建了一个名为的文件invisible.vbs并插入以下代码:

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

比创建一个任务计划程序来运行invisible.vbs文件就可以了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.