2015-04-15 4 views
0

Я хочу удалить принтер из учетной записи Windows. Это будет использоваться через Citrix. Сначала я хочу получить все принтеры, которые установлены для пользователя, а затем я хочу удалить принтер.Извлечение принтера через C# на Citrix

Для этого я использую следующий код. Это работает на обычном ПК. Но когда я использую это через 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; 
     } 
    } 
} 

ответ

1

ManagementObjectSearcher является частью классов API WMI. По умолчанию эти службы не включены в Citrix, и именно по этой причине они не работают. Вам необходимо иметь правильные сервисы, а также иметь лицензию на их использование. Проверьте это «http://support.citrix.com/article/ctx116423»

+0

Мы используем XenApp 7.6. В этой версии, похоже, работает по-другому. Мы не смогли найти эту услугу. Вы знаете, как это работает в XenApp 7.6? – Alexander

+1

Проверьте, установлена ​​ли функция поставщика WMI. Если нет, его можно найти в папке support/DirectorWMIProvider вашего установочного DVD. Если это установлено, убедитесь, что на вашем сервере включен WinRM. Вы можете использовать команду WinRm qc, чтобы проверить, включено ли оно или нет. –