C# 从windows服务调用控制台应用程序

C# 从windows服务调用控制台应用程序,c#,pdf,process,windows-services,console-application,C#,Pdf,Process,Windows Services,Console Application,我有一个简单的windows服务,我需要使用它来调用控制台应用程序。控制台应用程序通过打开adobe reader窗口生成要打印的pdf。运行控制台应用程序可以很好地打印pdf。但是从服务调用它并不成功。它甚至不会显示我记录事件的控制台窗口 Process pdfprocess = new Process(); pdfprocess.StartInfo.FileName = @"C:\Documents and Settings\xyz\Deskt

我有一个简单的windows服务,我需要使用它来调用控制台应用程序。控制台应用程序通过打开adobe reader窗口生成要打印的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";
很好。
原因是什么?

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

可能存在一些权限问题(PdfReportGeneration.exe在服务帐户下不可访问,或者可能是它使用的某个东西…)
我建议捕获进程监视器日志,以查看它的具体故障位置。

我正在使用Windows XP,并且在进程属性中选中了“允许服务与桌面交互”您对该服务使用什么凭据?本地系统作为管理员!若要查明是否存在安全问题,请尝试使用您自己的凭据运行该服务,并尝试使用系统帐户运行控制台应用程序(Sysinternals PsExec可以这样做)。你能提供一些相同的链接吗?我尝试了一些,但比较混乱!如何记录过程事件?你可以自己在Windows服务中编写pdf生成代码。我尝试了但没有成功,所以我去触发控制台应用程序。原因是我们无法在服务中使用system.drawing.printing相关类!