Я хочу удалить принтер из учетной записи 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;
}
}
}
Мы используем XenApp 7.6. В этой версии, похоже, работает по-другому. Мы не смогли найти эту услугу. Вы знаете, как это работает в XenApp 7.6? – Alexander
Проверьте, установлена ли функция поставщика WMI. Если нет, его можно найти в папке support/DirectorWMIProvider вашего установочного DVD. Если это установлено, убедитесь, что на вашем сервере включен WinRM. Вы можете использовать команду WinRm qc, чтобы проверить, включено ли оно или нет. –