获取本地打印机列表以更改打印机IP和默认打印机

时间:2011-05-12 12:47:21

标签: c# .net windows-7 printers

如何在没有管理员权限的用户的情况下找到运行该程序的计算机的所有本地打印机。我需要重新映射打印机IP并将打印机设置为默认值。我的想法是使用模拟来做到这一点,但我不知道在哪里可以找到打印机,以及它是否是使用模拟的好方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我认为你没有运气。模拟在这里不起作用,只是抛出异常。你可以通过模拟来尝试这个,并尝试打开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;
    }
}