小编Fid*_*Fid的帖子

通过在Windows服务中执行进程进行打印

我有一个Windows服务,需要启动一个过程来发送文件到打印机(我在那里找到解决方案/sf/answers/341302881/).我使用Process.Start()来做到这一点.我的问题是没有任何反应.

该服务实际上安装在我的开发人员计算机上(win7,x64).我尝试将其作为LOCAL SYSTEM,NETWORK SERVICE,LOCAL SERVICE安装,每次都有相同的结果.

我尝试了这种方式来启动我的过程:

Process p = new  Process();
p.StartInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
p.StartInfo.Arguments = "-p myFile.pdf";
p.Start();
Run Code Online (Sandbox Code Playgroud)

Process.Start("C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe", "-p myFile.pdf");
Run Code Online (Sandbox Code Playgroud)

并且

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
startInfo.Arguments = "-p myFile.pdf";

Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)

当我在winform应用程序中执行相同的代码时,一切正常,文件被发送到打印机.但在Windows服务中,没有任何反应.

我看到了帖子/sf/answers/438991661/,这解释了为什么我不会看到用户界面,这很好我无论如何都没有任何用户界面.但正如评论部分所述,没有用户输入的过程应该没问题.我开始的过程不需要任何用户输入.

我现在唯一能想到的是,由于会话隔离(/sf/answers/354462531/),该服务无法找到任何已安装的打印机......可以是这种情况吗?如果是这样,任何建议如何解决?如果没有,任何错误的想法?

谢谢!

编辑#1

我尝试用我的用户帐户运行该服务,它正在运行,所以我猜我的担心得到了确认......用户LOCAL SYSTEM和NETWORK SERVICE没有安装打印机.

所以我会稍微改进一下我的问题.这些帐户有没有办法访问计算机上安装的打印机?

编辑#2

我们最终决定创建一个用户来运行该服务,在该用户帐户中我们将安装要打印的打印机.

我想这个问题现在可以关闭了.感谢大家的帮助.

.net c# printing windows-services

9
推荐指数
1
解决办法
7251
查看次数

标签 统计

.net ×1

c# ×1

printing ×1

windows-services ×1