我有一個每小時在我的機器上運行的守護進程,即使我選中了該Hidden
框,它也不起作用。
該任務每小時運行一次,但它顯示黑色命令窗口,其中正在運行我的 .NET 控制台應用程式。它會一直保持可見,直到任務完成,然後消失。這非常煩人,因為它會彈出並打斷我正在做的事情:
我真的想隱藏它,那麼我該如何解決這個問題?
答案1
選取「無論使用者是否登入都會執行」複選框,可執行檔將在背景執行。
答案2
為什麼Windows 7排程任務運行被隱藏了?應該解釋為什麼會發生這種情況。
也,此 TechNet 描述常規任務屬性狀態:
任務的常規屬性顯示在「任務屬性」或「建立任務」對話方塊的「常規」標籤上。任務的常規屬性包括任務名稱、作者、描述、安全選項、任務配置的作業系統、以及控制任務是否隱藏的屬性。
在任務資料夾中建立任務時,必須為該任務命名。如果兩個任務位於同一任務資料夾中,則它們不能具有相同的名稱。任務描述是可選的。
任務安全選項指定任務運行所在的安全上下文。有關詳細信息,請參閱任務安全性上下文。
預設情況下,隱藏任務不會顯示在任務規劃程式使用者介面中。在「檢視」功能表中選擇「顯示隱藏任務」後,您可以查看隱藏任務。按一下「任務屬性」或「建立任務」對話方塊的「常規」標籤上的「隱藏」複選框即可隱藏任務。
這是否意味著複選框僅隱藏任務本身來自調度程序的 UI,而不是調度的實際程序?
答案3
答案4
我保留預設設定並編寫簡短的自訂程序,在不顯示視窗的情況下產生執行。例如,要執行批次檔而不彈出命令提示字元窗口,請使用下列程式碼。將任務設定為產生「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());
}
}
}