หยุดหน้าต่าง taskeng.exe ไม่ให้โผล่ขึ้นมา


18

ฉันมีกระบวนการหลายอย่างที่กำหนดไว้ในสภาพแวดล้อม Windows 7 ของฉันส่วนใหญ่สำหรับการสำรองข้อมูลที่ควรจะทำงานในพื้นหลัง

อย่างไรก็ตามแทนที่จะทำเพียงอย่างเดียวมันทำงานอย่างเงียบ ๆ ในพื้นหลังตัวจัดตารางเวลางานจะปรากฏหน้าต่าง "taskeng.exe" สีดำขึ้นมา หน้าต่างจะไปข้างหน้าหน้าต่างอื่น ๆ ทั้งหมด โชคดีที่มันไม่ได้ขโมยโฟกัสของแป้นพิมพ์ แต่จะบล็อกมุมมองทุกอย่าง

taskeng.exe

มีวิธีหลีกเลี่ยงหน้าต่างนี้หรืออย่างน้อยก็มีปรากฏในพื้นหลังโดยไม่ขโมยโฟกัสภาพของฉัน

ตัวอย่างที่แก้ไขหลังจากได้รับรางวัล:

นี่คือความพยายามครั้งสุดท้ายของฉันในการใช้สิ่ง WScript (ในไฟล์ชื่อ RunSignatured.bat):

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

ไฟล์ signatured.bat ประกอบด้วย:

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

ฉันกำลังมองหาวิธีแก้ปัญหาสำหรับปัญหานี้ที่ทำงานบน Vista SP2 โดยไม่ต้องติดตั้งเครื่องมืออื่น ๆ และจะรันแอพ Java แบบธรรมดา (แต่ทำงานอย่างต่อเนื่องบนตัวจับเวลา) จาก Task Scheduler ฉันเคยทำงานแบบนี้ก่อนที่จะทำการติดตั้ง แต่ไม่สามารถคิดได้ว่าตอนนี้ฉันจะกู้คืนกล่องของฉันได้อย่างไร (ฉันไม่ได้รับรูปแบบของ WshShell ในการทำงาน - ไฟล์แบ็ตเป้าหมายไม่เคยทำงาน (หรือถูกฆ่าทันทีด้วยเหตุผลบางอย่าง))
Daniel R Hicks

(โปรแกรม Java มีลูปตัวจับเวลาภายในของตัวเองซึ่งหมายความว่ามันจะยังคงทำงานหลังจากเริ่มต้น)
Daniel R Hicks

@DanielRHicks ลองดูวิธีแก้ปัญหา SUนี้อาจช่วยคุณได้
avirk

คุณสามารถระบุคำสั่งจริงที่เรียกใช้โดยงานได้หรือไม่
Ƭᴇcʜιᴇ007

@ techie007 - ดูด้านบนเมื่อการแก้ไขได้รับการอนุมัติ
Daniel R Hicks

คำตอบ:


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) ที่คุณเรียกใช้โดยตรงจาก Task Scheduler

สิ่งที่ต้องการ:

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 ที่อยู่ในพา ธ เนื่องจากเทคนิคไม่สามารถใช้งานได้กับพื้นที่ว่างใน Program Files เมื่อระบุพา ธ เต็ม ไม่มีข้อสงสัยวิธีอื่นในการแก้ไขปัญหานี้ แต่นั่นก็เพื่อให้คนอื่นค้นพบ

จากนั้นเพิ่มRunSignature.vbsเป็นชื่อ "โปรแกรม / สคริปต์" ใน "การกระทำ" ใน Task Scheduler


1
ฉันลองstart /bวิธีการมากมาย ดูเหมือนไม่มีอะไรจะกำจัดหน้าต่าง - ฉันคิดว่ามันถูกสร้างขึ้นในเวลาที่คุณเริ่มดำเนินการไฟล์ค้างคาวดังนั้นแล้วมันก็สายเกินไป
Daniel R Hicks

สำหรับวิธีที่สองเมื่อฉันพยายามเรียกใช้โดยตรง (โดยดับเบิลคลิกที่ไฟล์) ฉันจะได้รับ "Line: 3 ข้อผิดพลาด: ระบบไม่พบไฟล์ที่ระบุ"
Daniel R Hicks

นั่นเป็นตัวอย่างรหัสไม่ผ่านการทดสอบอย่างสมบูรณ์ ;) 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/en-us/library/d5fk67ky%28VS.85%29.aspxสำหรับรายการตัวเลือกทั้งหมดสำหรับวิธีการเรียกใช้


ฉันกลัวว่าเป็นไปไม่ได้เพราะฉันต้องการข้อมูลประจำตัวของ Kerberos สำหรับงานบางอย่าง
BlaM

คุณสามารถลองใช้งานทางอ้อมและใช้วิธีการทำงานของโฮสต์สคริปต์ windows ซึ่งช่วยให้คุณสามารถควบคุมวิธีการนำเสนอหน้าต่างเริ่มต้นของงาน ดูการแก้ไข
David Spillett

คำถามที่คล้ายกันพร้อมคำตอบเดียวกันกับการใช้ vbs: serverfault.com/questions/9038/…
Anthony 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

1
ในที่สุดทางออกที่เหมาะกับฉัน! แต่หลังจากรีสตาร์ทเท่านั้น
Fabian Röling

btw แทนที่จะทำ c: \ Windows \ System32 \ cmd.exe คุณสามารถทำได้% COMSPEC% ซึ่งถูกตั้งค่าเป็นล่ามพร้อมรับคำสั่งที่ใช้ ดูข้อมูลเพิ่มเติมได้ที่: en.wikipedia.org/wiki/COMSPEC
Brent Rittenhouse


2

วิธีที่ง่ายที่สุดในการซ่อนแอปพลิเคชั่นที่เปิดจาก Task Scheduler คือการตั้งค่าเป็น "เรียกใช้ว่าผู้ใช้เข้าสู่ระบบหรือไม่" การตั้งค่านี้สามารถพบได้ในแท็บทั่วไปของคุณสมบัติของงานที่กำหนดเวลาไว้


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 ตัวแทนอาชีพ ดูเหมือนว่าจะเป็นแอปพลิเคชั่นคอนโซลที่ไม่พยายามซ่อนตัวเอง

คุณควรมองหา Task Scheduler สำหรับงานที่อ้างถึง SQLyog และแก้ไขรายการให้ถูกต้อง ถ้าเป็นการเรียกแบบ cmd ให้ลองเพิ่มลง/bในรายการพารามิเตอร์ ถ้ามันเป็นเพียงการเรียกร้องให้ปฏิบัติการที่คุณสามารถแก้ไขให้ถูกต้องในมุมมองของ คำตอบของฉันนี้

หากคุณมีปัญหาในการค้นหารายการนี้ให้ใช้การทำงานอัตโนมัติเพื่อค้นหาวิธีเริ่ม SQLyog คุณยังสามารถใช้ regedit เพื่อค้นหาการกล่าวถึงทั้งหมดของ SQLyog หรืออะไรก็ตามที่เป็นชื่อของไดเรกทอรีการติดตั้ง

แน่นอนคุณสามารถถอนการติดตั้ง SQLyog MySQL GUI ได้เช่นกันหากคุณไม่ต้องการ

หากคุณยังไม่ได้ติดตั้ง SQLyog MySQL GUI แสดงว่าคอมพิวเตอร์ของคุณอาจติดไวรัส คุณสามารถใช้กระบวนการตรวจสอบเพื่อตรวจสอบเมื่อปรากฏป๊อปอัพเพื่อดูว่ามันเป็น taskeng.exe จาก system32 หรือหนึ่งในลุค Look ของ Taskeng.exe


แล้วโพสต์ในคำตอบอื่นดูเหมือนจะไม่ทำงาน
Tamara Wijsman

@TomWijsman: หากคุณอ้างถึงส่วน "/ b" ฉันรวมเฉพาะเพื่อความสมบูรณ์เท่านั้น
harrymc

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

กว่าสร้าง Task Scheduler เพื่อเรียกใช้invisible.vbsไฟล์และนั่นแหละ!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.