Получить список локальных принтеров, чтобы изменить IP-адрес принтера и принтер по умолчанию

#c# #.net #windows-7 #printers

#c# #.net #windows-7 #принтеры

Вопрос:

Как я могу найти все локальные принтеры компьютера, на котором запущена программа, с пользователем, у которого нет прав администратора. Мне нужно переназначить IP-адрес принтера и установить принтер по умолчанию. Моя идея состоит в том, чтобы использовать олицетворение для этого, но я не знаю, где найти принтер и является ли это хорошим решением для использования олицетворения.

Спасибо за любую помощь!

Комментарии:

1. Можете ли вы предоставить более подробную информацию об операционной системе?

Ответ №1:

Я не думаю, что вам повезет с этим. Олицетворение здесь не сработает и просто выдаст исключение. Вы можете попробовать это, создав олицетворение и попытавшись открыть Environment.Домен должен выдать вам исключение.

Вы можете попробовать что-то подобное без олицетворения:

 ManagementScope mscope = new ManagementScope(@"rootCIMV2", options);
mscope.Connect();
System.Management.ObjectQuery oQuery = new ObjectQuery("Select * from Win32_TCPIPPrinterPort");
System.Management.ManagementObjectSearcher searcher = new ManagementObjectSearcher(mscope, oQuery);
ManagementObjectCollection moCollection = searcher.Get();

foreach (ManagementObject mo in moCollection)
{
    string name = mo["Name"].ToString();

    if (name.Equals(this.portName))
    {
        System.Threading.Thread.Sleep(10000);
        mo["HostAddress"] = this.printerIP;
        mo.Put();
        Console.WriteLine("Adjusted Printer Port to new IP address "   this.printerIP);
        return true;
    }
}
  

Комментарии:

1. Неплохо. Чем вам следует воспользоваться, чтобы проверить этот ответ?

2. Извините, я новичок и не знал, что