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
397 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
Comment Utility
0
 
LVL 3

Author Comment

by:techprocess
Comment Utility
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
Comment Utility
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
 
LVL 7

Expert Comment

by:maXXXeE
Comment Utility
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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 69

Accepted Solution

by:
Éric Moreau earned 250 total points
Comment Utility
0
 
LVL 14

Assisted Solution

by:Dustin Hopkins
Dustin Hopkins earned 250 total points
Comment Utility
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
Comment Utility
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
Comment Utility
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

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
This video discusses moving either the default database or any database to a new volume.
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

763 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now