3

我想使用 Visual Studio 2010 从 C# 中的 Windows 服务进行打印。到目前为止,我仅通过使用此处找到的代码部分成功:

从没有打印对话框的 Windows 服务打印 html 文档

我目前遇到的问题有两个,我只是通过允许服务与桌面交互才发现的:

1) 当 URL 作为 HTML 位置输入时,它将请求该位置的凭据(我无法以任何方式更改的网络共享 IIS Web 服务器,它请求用户名和密码来访问信息)。

2)输入凭据后,默认打印机始终是 XPS 打印机,无论我对 SetDefaultPrinter 做什么(我发现了两种不同的方法)。我发现这是因为我要打印的打印机也是网络打印机,本地系统帐户无法访问(显然)。我还没有找到解决这个问题的方法。

我想通过以编程方式输入所需的凭据(这是一个网络共享凭据集)然后打印到网络打印机来解决这两个问题。在其他桌面应用程序中,我已成功打印到这些网络打印机中的每一个,即使我没有安装每一个。

尝试使用我的凭据而不是本地系统帐户登录并不能解决这两个问题。我正在使用 Windows XP。

假设我让它工作,我还需要在另一台服务器上安装服务,所以如果需要预安装每台打印机,我需要知道要采取哪些步骤来确保本地系统帐户可以访问它们。我将安装的服务器可能是 Windows Server 2003 或 2008,但将具有与开发机器相同的网络访问权限。

编辑:我尝试了一个解决方案,让它作为其他帐户登录,所有这些帐户都应该有凭据(事实上,如果在作为本地系统运行时输入这些凭据并进行桌面交互,这些凭据就会被接受)。尝试过此操作的每个用户都将默认打印机设置为我尝试测试打印的打印机,但没有打印。我唯一确定它正在尝试使用 XPS 打印机的时间是当它作为本地系统登录并进行桌面交互时。

4

2 回答 2

2

不要将服务作为本地系统运行。它没有您访问网络资源所需的权限。创建一个用户并在其下运行服务,如果您在域中,请确保它是域用户而不是本地用户。您需要以该用户身份登录并在运行服务的计算机上安装要使用的打印机。此外,如果 IIS 应用程序使用 Windows 身份验证,请查看您运行服务的帐户是否可以被授予访问 Web 应用程序的权限。

于 2012-04-24T17:01:59.410 回答
0

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

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

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

请参阅下面的屏幕截图。

在此处输入图像描述

于 2014-12-14T16:58:19.530 回答