通过 Windows Task Scheduler 在 c# 中静默打印到 Adob​​e Reader DC 的问题

Issue With silent printing to Adobe Reader DC in c# via Windows Task Scheduler

我正在尝试从需要自动化的 C# 控制台程序打印 pdf 文档。如果我手动 运行 它工作正常,但如果我使用 Windows 10 任务计划程序,它就不起作用。我看到 Adob​​e Reader 在任务管理器中启动,但它不打印或尝试打印。没有发生错误,它只是打开 adobe,然后在 10 秒后按预期关闭它。它与文件的大小无关,因为如果直接在桌面上执行,一切都会完美无缺。它曾经工作正常,但自从安装了 Windows 10 版本 1803 的功能更新后似乎已停止工作,尽管我猜它也可能是 Adob​​e Reader 更新。当它过去工作时,Adobe window 曾经出现在屏幕上然后消失(这不是问题),现在由于这些更新,一切都完全隐藏了,但它正在启动!显然无法调试,因为它仅在 Task Scheduler 中,而且看起来它与实际打印位分开工作。

C# 代码几乎是打印到 Adob​​e 的标准方式:

public static Boolean PrintPDFs(string pdfFileName)
    {
        try
        {
            Process proc = new Process();
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            proc.StartInfo.Verb = "print";

            proc.StartInfo.FileName = System.Configuration.ConfigurationManager.AppSettings["Adobe_Path"];
            proc.StartInfo.Arguments = String.Format(@"/o /p /h ""{0}""", pdfFileName);
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.CreateNoWindow = false;
            proc.EnableRaisingEvents = true;
            proc.Start();
            if (proc.HasExited == false)
            {
                proc.WaitForExit(10000);
            }
            proc.Close();
            //Abobe sometimes hangs around so we kill it!
            KillAdobe("AcroRd32");
            return true;
        }
        catch (Exception ex)
        {
            Log.WriteLog(ex.Message);
            return false;
        }
    }

有人知道如何在任务计划程序下安排时让它工作吗?我在具有最高权限的管理员用户帐户中 运行ning 任务计划程序。

谢谢

戴夫

我自己修好了。对于基本上对 Task Scheduler 感兴趣的任何人,我将其设置为 "Run whether the user is logged on or not" 我将其更改为 "Run Only when the user is logged on" 并且一切都重新开始工作。