3

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

谢谢你的帮助!

4

1 回答 1

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;
    }
}
于 2011-05-12T13:41:04.130 回答