开发者

Get local printer list to change printer IP and default printer

开发者 https://www.devze.com 2023-03-05 15:30 出处:网络
How am I able do find all local printers of the machi开发者_如何学编程ne where the program is running with a user that doesn\'t have admin rights. I need to remap the printer IP and set the printer as

How am I able do find all local printers of the machi开发者_如何学编程ne where the program is running with a user that doesn't have admin rights. I need to remap the printer IP and set the printer as default. My idea is to use impersonation to do this but I don't know where to find the printer and if it is a good solution to use impersonation.

Thanks for any help!


I don't think you will have any luck with this. Impersonation will not work here and just throw a exception. You can try this by making a impersonation and try to open Environment.Domain it should give you a exception.

You can try something like this without impersonation:

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;
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消