Вземете списък с локални принтери, за да промените IP адреса на принтера и принтера по подразбиране

Как мога да намеря всички локални принтери на машината, където програмата работи с потребител, който няма администраторски права. Трябва да пренасоча IP адреса на принтера и да задам принтера по подразбиране. Идеята ми е да използвам имитация, за да направя това, но не знам къде да намеря принтера и дали е добро решение да използвам имитация.

Благодаря за всяка помощ!


person Tim    schedule 12.05.2011    source източник
comment
Можете ли да предоставите повече информация за операционната система?   -  person sra    schedule 12.05.2011


Отговори (1)


Не мисля, че ще имате късмет с това. Имитирането няма да работи тук и просто хвърлете изключение. Можете да опитате това, като направите имитация и опитате да отворите 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;
    }
}
person sra    schedule 12.05.2011
comment
хубаво. Какво трябва да помислите за проверка на този отговор? - person sra; 12.05.2011
comment
Съжалявам, нов съм и не знаех това - person Tim; 12.05.2011