Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
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
Medium Priority
?
424 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +2
10 Comments
 
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
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 1000 total points
ID: 21855442
0
 
LVL 14

Assisted Solution

by:Dustin Hopkins
Dustin Hopkins earned 1000 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

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

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…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…

604 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