我想从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;
}
}
}
ManagementObjectSearcher 是 WMI API 类的一部分。默认情况下,Citrix 上未启用这些服务,这就是它不起作用的原因。您需要安装正确的服务,并拥有使用这些服务的许可证。看看这个"http://support.citrix.com/article/ctx116423"