Solved

How to get the names of all printers in a network (intranet) in a asp.net web app.

Posted on 2008-06-23
10
402 Views
Last Modified: 2013-12-16
How to get the names of all printers in a network (intranet) in a asp.net, c#.net  web app.

I have used the following code. but It only returns the name of printers installed on the server machine.
         System.Drawing.Printing.PrinterSettings.InstalledPrinters;
But I want all the printers available on a intranet network. which may or  may not be installed on a server machine.
0
Comment
Question by:techprocess
  • 2
  • 2
  • 2
  • +2
10 Comments
 
LVL 5

Expert Comment

by:rendaduiyan
ID: 21853198
0
 
LVL 3

Author Comment

by:techprocess
ID: 21853277
I have tried this code. But it only gives the names of the printers installed on server computer. And not on the intranet.
using System.Management;
 
public void fn(){
// Use the ObjectQuery to get the list of configured printers
        System.Management.ObjectQuery oquery =
            new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");
 
        System.Management.ManagementObjectSearcher mosearcher =
            new System.Management.ManagementObjectSearcher(oquery);
 
        System.Management.ManagementObjectCollection moc = mosearcher.Get();
 
        foreach (ManagementObject mo in moc)
        {
            System.Management.PropertyDataCollection pdc = mo.Properties;
            foreach (System.Management.PropertyData pd in pdc)
            {
                if ((bool)mo["Network"])
                {
                    ddlPrinter.Items.Add(Convert.ToString(mo[pd.Name]));
                }
            }
        }
}

Open in new window

0
 
LVL 7

Expert Comment

by:maXXXeE
ID: 21853408
I am not aware of any direct way to query all the printers in the network, specially if these are connected to computer via USB instead of directly connected to network via lan.

But you can do a workaround.

You can write a small app and run it as a service in client machines.
Then you can get the info in either of the 2 ways
1) Query each of these apps from your server when required
or
2) Let the app send or periodically update the printer details to the server via web service.
0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 7

Expert Comment

by:maXXXeE
ID: 21853550
Another way, is to install remote printer drivers of all the printers in the intranet.
This might not be possible always based on the network environment.

In this case you can use the above code to get the printer and also do any printing tasks from the server.
0
 
LVL 70

Accepted Solution

by:
Éric Moreau earned 250 total points
ID: 21855442
0
 
LVL 14

Assisted Solution

by:Dustin Hopkins
Dustin Hopkins earned 250 total points
ID: 21855871
I use this in a console application, but it wouldn't take much to port it into a web app
This returns "servername-printername"

{ 
    DirectoryServices.DirectoryEntry deParent = new DirectoryServices.DirectoryEntry(); 
    deParent.Username = SvcAcct; // Domain account username
    deParent.Password = SvcPass; // Domain account password
    deParent.AuthenticationType = DirectoryServices.AuthenticationTypes.Secure; 
    DirectoryServices.DirectorySearcher ds = new DirectoryServices.DirectorySearcher(deParent); 
    ds.Filter = "(&(ObjectCategory=printQueue))"; 
    foreach (DirectoryServices.SearchResult result in ds.FindAll()) { 
        Console.WriteLine(result.GetDirectoryEntry().Name); //<-- this is where you would change to response.write/import row into dataset ect.
    } 
} 

Open in new window

0
 
LVL 14

Expert Comment

by:Dustin Hopkins
ID: 21855936
Oh yeah, forgot to mention, that will only return all printers that are published in active directory/shared.
0
 
LVL 5

Expert Comment

by:rendaduiyan
ID: 21862956
i am glad it helps. I've ever had a task to list all printer but cancelled. This is what i remember.
0

Featured Post

Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question