如何在ASP.NET中获取网络打印机

时间:2011-02-14 07:32:20

标签: asp.net iis network-printers

我需要显示安装在网络中的打印机。我使用下面的代码显示打印机,但在本地它显示网络打印机,但在IIS中托管时它不显示网络打印机。(仅显示本地打印机)。

代码-1:

     ApplicationPrinter printer = new ApplicationPrinter();
     ddlPrinters.DataSource = printer.InstalledPrinters();
     ddlPrinters.DataBind();
     ddlPrinters.SelectedItem.Text = printer.DefaultZebraPrinter();

代码-2:

    ddlPrinters.Items.Clear();

        try
        {
            // Use the ObjectQuery to get the list of configured printers
            ObjectQuery oquery =
                new ObjectQuery("SELECT * FROM Win32_Printer");

            ManagementObjectSearcher mosearcher =
                new ManagementObjectSearcher(oquery);

            ManagementObjectCollection moc = mosearcher.Get();

            foreach (ManagementObject mo in moc)
            {
                PropertyDataCollection pdc = mo.Properties;
                foreach (PropertyData pd in pdc)
                {
                    if ((bool)mo["Network"])
                    {
                        ddlPrinters.Items.Add(mo["Name"].ToString());
                        break;
                    }

                }
            }
        }
        catch (ManagementException ex)
        {
            string msgDesc = string.Empty;
            string script = string.Empty;
            msgDesc = ex.Message;
            script = "<script language=\"javascript\">alert('" + msgDesc + "'); </script>";
            ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "UserMessage", script, false);
        }

如果((bool)mo [“Network”])用于仅显示网络打印机。

有没有办法在ASP.NET中使用网络打印机?

2 个答案:

答案 0 :(得分:2)

将此行添加到web.config的部分可以解决问题。提供的用户标识需要映射网络打印机。

<identity impersonate="true" userName="domain\user" password="password" />

答案 1 :(得分:0)

您是否尝试首先在工作站上安装网络打印机,然后执行win32_printer查询?

P.S。你可以通过\\ printername

安装它