3

我需要显示安装在网络中的打印机。我使用下面的代码显示打印机,但在本地显示网络打印机,但是当托管在 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);
        }

这里 if ((bool)mo["Network"]) 用于仅显示网络打印机。

有没有办法在 ASP.NET 中获取网络打印机?

4

2 回答 2

2

将此行添加到 web.config 的部分就可以了。提供的用户 ID 需要映射网络打印机。

<identity impersonate="true" userName="domain\user" password="password" />
于 2011-02-23T03:17:15.790 回答
0

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

ps你可以通过\\printername安装

于 2011-02-22T12:15:21.910 回答