2011-02-14 13 views
3

ネットワークにインストールされているプリンタを表示する必要があります。私は以下のコードを使ってプリンタを表示していましたが、ローカルにはネットワークプリンタを表示していましたが、IISでホストされているとネットワークプリンタは表示されません(ローカルプリンタのみ表示)。ASP.NETでネットワークプリンタを入手する方法

コード-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 [ "ネットワーク"])のみネットワークプリンタを示すために使用されます。

ASP.NETでネットワークプリンタを取得する方法はありますか?

+2

(サーバー上で実行される)クライアントのプリンタを表示するコードが必要ですか?それは起こりません。 –

答えて

0

ワークステーションにネットワークプリンタをインストールしてから、win32_printerクエリを実行しようとしましたか?

p.s. \\ printernameでインストールすることができます

2

この行をweb.configのセクションに追加すると、このトリックが実行されます。提供されたユーザーIDには、ネットワークプリンタがマップされている必要があります。

<identity impersonate="true" userName="domain\user" password="password" /> 
関連する問題