我有一个守护进程,我每小时都会在我的计算机上运行它,尽管我选中了该Hidden
框,但它不起作用。
每小时,任务都会运行,但它会显示黑色命令窗口,其中正在运行我的 .NET 控制台应用程序。该窗口一直可见,直到任务完成,然后消失。这非常烦人,因为它会弹出并打断我正在做的事情:
我确实希望隐藏它,那么我该如何解决这个问题?
答案1
选中“无论用户是否登录都运行”复选框,可执行文件将在后台运行。
答案2
Windows 7计划任务运行为什么被隐藏?应该解释为什么会发生这种情况。
还,TechNet 对此的描述常规任务属性状态:
任务的常规属性显示在任务属性或创建任务对话框的常规选项卡上。任务的常规属性包括任务名称、作者、说明、安全选项、任务所配置的操作系统、以及控制任务是否隐藏的属性。
在任务文件夹中创建任务时,必须为该任务命名。如果两个任务位于同一个任务文件夹中,则它们不能具有相同的名称。任务描述是可选的。
任务安全选项指定任务运行的安全上下文。有关更多信息,请参阅任务安全上下文。
默认情况下,隐藏任务不会显示在任务计划程序用户界面中。在“查看”菜单中选择“显示隐藏任务”后,您可以查看隐藏任务。单击“任务属性”或“创建任务”对话框的“常规”选项卡上的“隐藏”复选框即可隐藏任务。
这是否意味着复选框仅隐藏任务本身来自调度程序的用户界面,而不是实际调度的程序?
答案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());
}
}
}