gpt4 book ai didi

c# - 通过执行 Windows 服务中的进程进行打印

转载 作者:太空狗 更新时间:2023-10-29 17:57:30 25 4
gpt4 key购买 nike

我有一个 Windows 服务需要启动一个进程以将文件发送到打印机(我在那里找到了解决方案 https://stackoverflow.com/a/4875755/1228738)。我使用 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();

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

还有

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);

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

我看到那个帖子 https://stackoverflow.com/a/6271309/1228738 ,这就解释了为什么我看不到 UI,没关系,反正我没有任何 UI。但是正如评论部分所说,没有用户输入的过程应该是可以的。我开始的过程不需要任何用户输入。

我现在唯一能想到的是,由于 session 隔离 (https://stackoverflow.com/a/5063750/1228738),该服务无法找到任何已安装的打印机...可能是这种情况吗?如果是这样,有什么建议可以解决这个问题吗?如果没有,知道哪里出了问题吗?

谢谢!

编辑#1

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

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

编辑#2

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

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

最佳答案

我也有这个问题,这个技巧解决了

转到服务 ---> 双击所需的服务 ---> 继续登录选项卡

提供安装打印机的登录凭据。

运行您的服务,然后检查打印机队列。

原因:本地系统账户没有安装那些打印机!

请参见下面的屏幕截图。 enter image description here

关于c# - 通过执行 Windows 服务中的进程进行打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com