Global Network Printers


How do you install printers on a windows server 2003 that will be available to all logons?

I have installed a load of printers as administrator but we have an application that runs under a different account that has no printers?

do i just have to create a profile as the account that needs them and install them again??
Who is Participating?
Ah, i think i get what you're trying to do...what you want to do is called "server-side printing". The printer does need to be "locally" installed, but can be locally installed AS A NETWORK PRINTER, get it? Plus, you're .NET web application needs to fulfill certain "requirements". If you examine and follow this text, I bet your app will print:

-the printers must be installed to the Web server
-the local SYSTEM account is given access to the printers
-the Machine.config file holding configuration settings for the .NET Framework is edited to give the ASPNET worker process access to the system settings on the server.
*Note   Implementing server-side printing involves changing the default permissions on the server and is not recommended for applications that are exposed to the Internet.

To setup server-side printing you need to ensure the process under which ASP.NET is running has sufficient permissions to access Network printers. By default, ASP.NET runs with the permissions of the local “machine” (ASPNET account for the ASPNET worker process) account. In order to achieve network printing through IIS (Internet Information Services), the Framework should be run under the local SYSTEM account.

To setup server-side printing

Access the Machine.config files which is located by default at:

<VersionNumber> is the version of the .NET Framework installed to the computer. The account setting is contained within the <ProcessModel> tag of this file. The default setting for the account is: userName="machine" password="AutoGenerate"

Edit the default configuration settings in the Machine.config file. Change the default setting to:
userName="SYSTEM" password="AutoGenerate"
Save the file.
It is now possible to give the local SYSTEM account on the server permissions to print.

If the printer is a network printer, expose the network printer to the local SYSTEM account.
When a printer is installed to a computer, the settings for this printer are stored in the registry under the HKEY_CURRENT_USER registry hive (Registry file). The IIS process will never use this registry hive since it always runs under the context of the local SYSTEM account and cannot be logged onto a server as a “Current User”. By default, the SYSTEM account does not have any printers set up in the registry. There are two Microsoft knowledge base articles, Q152451 and Q184291 that explain how to expose the printer settings to the System account. Both of these articles require editing the registry on the Web server and copying the printer settings from the HKEY_CURRENT_USER hive to the HKEY_USERS/.DEFAULT hive.

Hope that gets it! -neo
Lee W, MVPTechnology and Business Process AdvisorCommented:
Printers installed locally (as opposed to mapped to the network) are available to all users.
You should also share the printers.
Network Scalability - Handle Complex Environments

Monitor your entire network from a single platform. Free 30 Day Trial Now!

Do you want local users or domain users to have access to these printers?  Printers should be abvailable to anyone who logs on locally if they are installed by someone with admin rights.  For domain users to be able to use these printers you will need to add them to thier local machines when they are logged on, the printers need to be shared in order to do this though.  If you are using Terminal Services then the printers will need to be added to each account.  I think there are way to script this but I am not sure how.
RShooper is correct, for printer to "be available" all you have to do is share them with the right permissions.

You can control the assignment of printers using group policy though...Use this article if you want to control printers through Group Policy on your network.

Note: The best way to apply group policy to a set of users is to create an organizational unit.

You need to share the printers (publish in AD) and then run a script to map the printers to the users.

'Declares variables used through-out the script

DIM fso

Set WshShell = WScript.CreateObject("WScript.Shell")
Set wshNetwork = CreateObject("WScript.Network")
Set fso = CreateObject("Scripting.FileSystemObject")

'Maps the pre-determined user directories

wshNetwork.MapNetworkDrive "M:", "\\SERVER\SHARE" & ""

'Maps Printers

wshNetwork.AddWindowsPrinterConnection "\\SERVER2\PRINTERNAME1"
wshNetwork.AddWindowsPrinterConnection "\\SERVER1\PRINTERNAME2"
wshNetwork.SetDefaultPrinter "\\SERVER2\PRINTERNAME1"

save that as a .vbs file under %SYSTEMROOT%\sysvol\SYSVOL\scripts\
yvsupportAuthor Commented:
thanks guys.

Ok. The setup is:

1 x Windows Server 2003 Std print server with all printers on site installed locally
1 x Windows Server 2003 Web which runs the 'application' (browser based for the client) through IIS.

All printers are shared and installed as network printers (connected to the print server) on the web server.

The application runs under the 'ASPNET' account on the web server but has no printers.

Are you saying that the printers need to be installed locally on the web server?? If so, this would go against our model as the spooling would surely take place on the web server and not on the dedicated print box??

hmmm. Any ideas of how to get round this??
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.