Получить список локальных принтеров для изменения IP-адреса принтера и принтера по умолчанию - PullRequest
3 голосов
/ 12 мая 2011

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

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

1 Ответ

2 голосов
/ 12 мая 2011

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

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

ManagementScope mscope = new ManagementScope(@"\root\CIMV2", 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;
    }
}
...