C# 排除远程桌面连接重定向的打印机
我有一个使用LocalPrintServer类枚举所有本地安装的打印机的方法。当有人从远程桌面连接使用应用程序时,我想安装远程桌面连接重定向的打印机C# 排除远程桌面连接重定向的打印机,c#,.net,wpf,printing,remote-desktop,C#,.net,Wpf,Printing,Remote Desktop,我有一个使用LocalPrintServer类枚举所有本地安装的打印机的方法。当有人从远程桌面连接使用应用程序时,我想安装远程桌面连接重定向的打印机 using (LocalPrintServer printServer = new LocalPrintServer()) { var printQueuesOnLocalServer = printServer.GetPrintQueues( new[
using (LocalPrintServer printServer = new LocalPrintServer())
{
var printQueuesOnLocalServer = printServer.GetPrintQueues(
new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
var terminalRedirectedPrintQueues = printQueuesOnLocalServer
.Except(printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.TerminalServer }));
// Filter out the printers that are redirected from a remote desktop connection
// TODO: doesn't work, GetPrintQueues always returns all printers
foreach (PrintQueue printer in printQueuesOnLocalServer.Where(
p => !terminalRedirectedPrintQueues.Select(t => t.FullName).Contains(p.FullName)))
{
yield return printer.FullName;
}
}
不幸的是,返回的枚举始终为空,因为对GetPrintQueues的两个调用返回相同的打印机集合,尽管使用不同的参数调用。这是机器的问题吗?还是我只是误解了GetPrintQueues的工作方式