Как получить сетевые принтеры в ASP.NET - PullRequest
3 голосов
/ 14 февраля 2011

Мне нужно показать принтеры, установленные в сети. Я использовал приведенный ниже код для отображения принтеров, но локально он показывает сетевые принтеры, но при размещении в 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?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Добавление этой строки в раздел web.config делает свое дело. Предоставленный идентификатор пользователя должен иметь сопоставленные сетевые принтеры.

<identity impersonate="true" userName="domain\user" password="password" />
0 голосов
/ 22 февраля 2011

Вы пытались сначала установить сетевой принтер на рабочую станцию, а затем выполнить запрос win32_printer?

Ps вы можете установить его по \\ printername

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...