我正在编写一个应用程序来检查来自打印服务器的网络打印机是否连接到远程机器,但是远程部分有问题......我正在使用 System.Printing 并通过远程主机名/IP 地址传递“compID”变量。我遇到的问题是代码总是在我的本地机器而不是远程机器上返回网络打印机:
EnumeratedPrintQueueTypes[] compEnumerationFlags = { EnumeratedPrintQueueTypes.Connections };
PrintServer compPrinters = new PrintServer("\\\\" + compID);
PrintQueueCollection printQueuesOnComputer = compPrinters.GetPrintQueues(compEnumerationFlags);
List<string> compPrinterList = new List<string>();
foreach (PrintQueue printer in printQueuesOnComputer)
{
compPrinterList.Add(printer.Name);
}
string csv = string.Join("\n", compPrinterList.ToArray());
Microsoft.VisualBasic.Interaction.MsgBox(csv);
原谅最后的混乱点,但这对我来说只是一种快速而肮脏的方式来看看目前的结果。
奇怪的是,如果我将“compID”变量更改为我们的实际打印服务器并将标志从“Connections”更改为“Shared”,那么代码会成功从我们的打印服务器返回所有共享打印机。
所有这些都是在我们的域上以管理员身份运行的,所以这应该不是问题。我是否忽略了一些简单的事情,或者我可以使用 PrintServer 连接的机器类型是否存在某种限制?