我想从Windows帐户中删除打印机。这将通过Citrix使用。 首先,我想检索为用户安装的所有打印机,然后我想删除打印机。
我使用以下代码执行此操作。 这适用于普通PC。但是,当我通过Citrix使用它时,它不起作用。 并非所有打印机都通过此方法检索。我也无法删除打印机。 有人知道为什么吗? 如何通过Citrix使用此功能? 通过Citrix使用它有什么不同?
using System.Collections.Generic;
using System.Linq;
using System.Management;
namespace RemovePrinter
{
public class PrinterManager
{
public List<string> GetInstalledPrinters()
{
var managementScope = new ManagementScope(ManagementPath.DefaultPath);
managementScope.Connect();
var selectQuery = new SelectQuery {QueryString = @"SELECT * FROM Win32_Printer"};
var objectSearcher = new ManagementObjectSearcher(managementScope, selectQuery);
var ojectCollection = objectSearcher.Get();
return (from ManagementBaseObject item in ojectCollection select item["Name"].ToString()).ToList();
}
public bool DeletePrinter(string printerName)
{
var managementScope = new ManagementScope(ManagementPath.DefaultPath);
managementScope.Connect();
var selectQuery = new SelectQuery
{
QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" +
printerName.Replace("\\", "\\\\") + "'"
};
var ojectSearcher = new ManagementObjectSearcher(managementScope, selectQuery);
var ojectCollection = ojectSearcher.Get();
if (ojectCollection.Count == 0) return false;
foreach (var item in ojectCollection.Cast<ManagementObject>())
{
item.Delete();
return true;
}
return false;
}
}
}
答案 0 :(得分:1)
ManagementObjectSearcher是WMI API类的一部分。默认情况下,Citrix上未启用这些服务,这就是它无法正常工作的原因。 您需要安装正确的服务,并且拥有使用这些服务的许可。 看看“http://support.citrix.com/article/ctx116423”