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

3

我如何在没有管理员权限的情况下找到运行程序的机器上的所有本地打印机。我需要重新映射打印机IP并将打印机设置为默认打印机。我的想法是使用模拟用户身份来实现这一点,但我不知道在哪里查找打印机,并且是否使用模拟用户身份是一个好的解决方案。

感谢任何帮助!


你能提供更多关于操作系统的信息吗? - sra
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;
    }
}

很好。那么你应该考虑检查这个答案吗? - sra
对不起,我是新手,不知道那个。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接