【问题标题】:Invoke console app from windows service从 Windows 服务调用控制台应用程序
【发布时间】:2013-11-18 09:47:14
【问题描述】:

我有一个简单的 Windows 服务,我需要使用它来调用控制台应用程序。控制台应用程序通过打开 adobe 阅读器窗口生成要打印的 pdf。运行控制台应用程序可以很好地打印 pdf。但是从服务调用它不是成功。它甚至没有显示我记录事件的控制台窗口。

            Process pdfprocess = new Process();
            pdfprocess.StartInfo.FileName = @"C:\Documents and Settings\xyz\Desktop\dgdfg\PdfReportGeneration\bin\Debug\PdfReportGeneration.exe";

            pdfprocess.StartInfo.UseShellExecute = false;
            pdfprocess.StartInfo.RedirectStandardOutput = true;
            pdfprocess.Start();

但调用其他应用程序,如

 pdfprocess.StartInfo.FileName = @"C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe";

工作正常。 会是什么原因?

【问题讨论】:

  • 您可以自己在窗口服务中编写您的 pdf 生成代码。
  • 我试过没用,所以我去触发一个控制台应用程序。原因是我们不能在服务中使用 system.drawing.printing 相关的类!

标签: c# pdf process windows-services console-application


【解决方案1】:

那里可能存在一些权限问题(PdfReportGeneration.exe 在服务帐户下无法访问,或者可能是它使用的东西......) 我建议捕获 Process Monitor 日志以查看它到底在哪里失败。

【讨论】:

  • 如何记录进程事件?
【解决方案2】:

Windows 服务在不同的窗口站中运行并且无法与桌面交互,除非您使用的是旧版本的 Windows 并在服务管理器的服务属性中勾选复选框。

【讨论】:

  • 我使用的是 Windows XP,在进程属性中我确实检查了“允许服务与桌面交互”
  • 您使用什么凭据进行服务?
  • 本地系统管理员身份!
  • 要确定这是否是安全问题,请尝试使用您自己的凭据运行服务,并尝试使用系统帐户运行控制台应用程序(Sysinternals PsExec 可以做到)。
  • 你能给我一些相同的链接吗?我尝试了一些但更多的是困惑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
相关资源
最近更新 更多