在 Citrix 上通过 C# 删除打印机



我想从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"

最新更新