【问题标题】:Removing a Printer via C# on Citrix在 Citrix 上通过 C# 删除打印机
【发布时间】:2015-04-15 17:31:02
【问题描述】:

我想从 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;
       }
   }
}

【问题讨论】:

    标签: c# winapi printing citrix


    【解决方案1】:

    ManagementObjectSearcher 是 WMI API 类的一部分。默认情况下,Citrix 上未启用这些服务,这就是它不起作用的原因。 您需要安装正确的服务并获得使用这些服务的许可。 看看这个“http://support.citrix.com/article/ctx116423

    【讨论】:

    • 我们使用的是 XenApp 7.6。在这个版本中,它的工作方式似乎有所不同。我们找不到这项服务。你知道它在 XenApp 7.6 中是如何工作的吗?
    • 请检查是否安装了 WMI Provider 功能。如果没有,可以在安装 DVD 的 support/DirectorWMIProvider 文件夹中找到它。如果已安装,请确保在您的服务器上启用了 WinRM。您可以使用 WinRm qc 命令检查其是否为 ON。
    猜你喜欢
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多