RDP Shared Printer 工作正常,但当 IIS 应用程序尝试打印到它时却不行
RDP Shared Printer works fine, but not when the IIS application tries to print to it
我通过 RDP 将 Windows 测试页打印到打印机没有问题,但是 IIS 中的应用程序 运行 无法打印到共享的 RDP 打印机。在相应地设置 PrinterSetting 后,它在 RDP 之外工作,它将打印机视为无效和脱机。
我看到了一些关于为用户 运行 IIS 应用程序设置打印机权限的建议,但是对于通过 RDP 共享的重定向打印机,所有安全设置都通过 RDP 禁用。
以下两种情况都通过 RDP 向共享打印机返回错误。无论如何我都尝试过打印,正如预期的那样,我遇到了一个异常,因为它无法访问打印机。
if (!printDocument.PrinterSettings.IsValid || !IsPrinterOnline())
private bool IsPrinterOnline()
{
bool printerIsOnline = false;
string printerName = _printerName;
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '{0}'", printerName);
ManagementObjectSearcher searcherPrinters = new ManagementObjectSearcher(query);
foreach (ManagementObject printer in searcherPrinters.Get())
{
printerIsOnline = !printer["WorkOffline"].ToString().Equals("True");
}
return printerIsOnline;
}
当您通过 RDP 连接到一台机器并随身携带打印机时,这允许应用程序 运行ning 在您的配置文件 上访问您的远程连接打印机。
但是,IIS 应用程序 运行 在不同的用户上下文中,因此它们将无法访问您的用户会话中可用的任何打印机。通常他们只能访问系统范围内可用的打印机。即使 IIS 配置为 运行 应用程序池和站点作为远程连接的同一用户,我也不认为 IIS 能够打印到打印机,因为它是用户配置文件的不同实例。
最好的方法是直接通过 UNC 连接到远程打印机,而不是尝试通过 RDP 连接进行打印。
我通过 RDP 将 Windows 测试页打印到打印机没有问题,但是 IIS 中的应用程序 运行 无法打印到共享的 RDP 打印机。在相应地设置 PrinterSetting 后,它在 RDP 之外工作,它将打印机视为无效和脱机。
我看到了一些关于为用户 运行 IIS 应用程序设置打印机权限的建议,但是对于通过 RDP 共享的重定向打印机,所有安全设置都通过 RDP 禁用。
以下两种情况都通过 RDP 向共享打印机返回错误。无论如何我都尝试过打印,正如预期的那样,我遇到了一个异常,因为它无法访问打印机。
if (!printDocument.PrinterSettings.IsValid || !IsPrinterOnline())
private bool IsPrinterOnline()
{
bool printerIsOnline = false;
string printerName = _printerName;
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '{0}'", printerName);
ManagementObjectSearcher searcherPrinters = new ManagementObjectSearcher(query);
foreach (ManagementObject printer in searcherPrinters.Get())
{
printerIsOnline = !printer["WorkOffline"].ToString().Equals("True");
}
return printerIsOnline;
}
当您通过 RDP 连接到一台机器并随身携带打印机时,这允许应用程序 运行ning 在您的配置文件 上访问您的远程连接打印机。
但是,IIS 应用程序 运行 在不同的用户上下文中,因此它们将无法访问您的用户会话中可用的任何打印机。通常他们只能访问系统范围内可用的打印机。即使 IIS 配置为 运行 应用程序池和站点作为远程连接的同一用户,我也不认为 IIS 能够打印到打印机,因为它是用户配置文件的不同实例。
最好的方法是直接通过 UNC 连接到远程打印机,而不是尝试通过 RDP 连接进行打印。