Quantcast
Channel: Ask the Performance Team Blog
Viewing all 71 articles
Browse latest View live

Default Print Device Selection Behavior in Windows

$
0
0

Good Morning AskPerf Readers! Our theme today is printing, specifically Default Printer selection behavior. We regularly get asked the question on what causes the default printer to change on a Windows host. Understanding the reasons why this change occurs can alleviate a lot of the frustration end users experience when it happens, as well as provide helpdesk staff an easy-to-share solution to the problem.

When installing a new print device (or software that may install a software based printer), the default printer may change for the current user without prompting the user if the current default printer has been deleted. This can happen if the new installation package deletes the current default printer prior to installing the new one (this behavior is by design).

Steps to reproduce the behavior:

The user deletes their default printer (the number of printers installed is irrelevant) for whatever reason. The user is warned this will change their default print device.

Screen1

The Windows Spooler will arbitrarily choose a different print device as default for that user based on the list under HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices. Selection is prioritized: standard printers over virtual printers and local printers over remote connections.

The HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\UserSelectedDefault value will be changed from 1 to 0, indicating the user did not make an active decision to have this new printer as his default print device. Whenever a new print device is installed by the user, it will be automatically chosen as the default printer without asking the user if this is desired.

The HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\UserSelectedDefault value will be changed from 0 to 1, indicating the user actively installed this new printer, presumably wanting to have it as his default print device.

Prior to deleting a Print device that’s marked as the default printer, users should select a different default print device using the Devices and Printers Control Panel applet.

Screen2

Additional Resources:

Users’ Default Printer can also be changed by other specific situations. Additional details about those situations can be found at the following links:

Location Aware Printing Walkthrough
http://technet.microsoft.com/en-us/library/ee424313(WS.10).aspx

Windows 7 / Windows Server 2008 R2: Location-Aware Printing
http://blogs.technet.com/b/askperf/archive/2009/10/10/windows-7-windows-server-2008-r2-location-aware-printing.aspx

Using Group Policy to Set Default Printers in Windows 7
http://technet.microsoft.com/en-us/edge/Video/ff710962

Remote Desktop Printer Redirection Settings
http://technet.microsoft.com/en-us/library/ee791784(WS.10).aspx

-Adam Richards


Microsoft Fixit for Printing

$
0
0

Good morning AskPerf world!  Jeff Hagler from the Performance team here to chat about printing.  How many of you have ever dealt with an issue where you just knew that something was wrong with your print spooler but could not quite put a finger on it?  Maybe print jobs were slow, certain users could print to some printers but not others, or maybe nobody could print at all?

Back in the day, we included a tool with the Windows 2003 Resource Kit called Cleanspl that was able to make sure that the spooler service was configured correctly and clear of any third party dependencies that may be referencing bad/missing files.  Cleanspl is a great tool, but by being hidden in the resource kit, it was rarely used.  Up until now, this tool did not exist/work in recent Operating Systems like Windows Server 2008..

We are happy to announce the same functionality in Cleanspl (and a bit more) has been built into one of our Fixits that will run on Windows XP/2003 and Windows Vista/2008 and can be downloaded from Fixit 9662904.

*UPDATE* As of today (4/24/2013), the Fixit for Windows 7 and Windows Server 2008 R2 is now available!

Direct link to Print Reset Full Mode - http://go.microsoft.com/?linkid=9829711
Direct Link to Print Reset Lite Mode - http://go.microsoft.com/?linkid=9829710

Related KB Article:

You experience Print Spooler error messages after installing or upgrading a Third-Party print driver
http://support.microsoft.com/kb/2793718

Please Note:  All applications must be shut down before running the Fix It Solution.  Some applications will open a handle to the print spooler when running and this will prevent any cleanup from occurring.  The Fix It Solution will not shut down any applications before the cleanup to prevent loss of data.

This Fixit package consists of two modes: Light and FullLight will make changes to the spooler that should not require your end user to make any changes, while the Full mode will restore the print spooler to defaults and will require a complete reinstall of your print drivers and printers.  Think of the Light version as something you can run on any system (print server, terminal server, normal client system) as a first troubleshooting step, and the Full version as something to reserve for systems that get their printers and print drivers pushed down from Print Servers (via Group Policy and Point and Print).  Let’s cover the key part of the previous statement again for Fixit 9662904 – do not run the Full version on a Print Server as it will delete all the printers.  Basically, it puts your Print Environment back to the way it was when the OS was installed.

When you first run the Fixit on your system, you will be prompted with the normal installation/licensing agreement screens.  You will then receive the dialog box below.  To run the Light version, just click Next.  To run the Full version, you will need to check the box to “Reset the print spooler to defaults”.

Note the Light version does not require a reboot but the Full version does.  Again,do not run the Full version Fixit 9662904 on a Print Server as it will delete all the print drivers and print queues

clip_image001

Here are the details on what actually happens during each of these cleanups:

Light Mode

  • Set the print spooler service back to its defaults (automatically start, run as Local System, etc.)
  • Remove any dependencies that the spooler may have on 3rd party services
  • Delete any print jobs from %windir%\system32\spool\printers (shd and spl files)
  • Turn on logging of print errors and warning to the event log (Printers -> File -> Server Properties -> Advanced Tab -> “Log spooler error events” and “Log spooler warning Events” will be checked)
  • Make sure the standard print monitors are present (USB, Local Port, and TCPIP) under [HKLM\CurrentControlSet\Control\Print\Monitors] (and WSD on 2008/Vista only)
  • Ensure that the winprint print processor is present for the architecture of the computer – for example: [HKLM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\winprint]
  • Start the print spooler service
  • If any of the core print spooler binaries are missing (spoolsv.exe, spoolss.dll, localspl.dll, win32spl.dll), the package attempts to copy that file from dllcache - if they aren’t present in dllcachce, we log that in the desktop log file
  • If ntprint.inf is missing, we log that to the desktop log file
  • If there is a bogus path for the spool directory DefaultSpoolDirectory under [HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers], we log that information to the desktop log file

Full Mode

  • Does all of the Light steps first
  • Delete *.spl and *.shd files from a non-default spool folder
  • Delete *.spl and *.shd files from the default spool folder:  %windir%\System32\spool\printers
  • Delete printer shares
  • Delete per-machine printers from [HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers] (except on Vista do not delete "Microsoft XPS Document Writer" and “Fax”)
  • Delete per-machine connections from [HKLM\SYSTEM\CurrentControlSet\Control\Print\Connections] and the “Connections” key itself
  • Delete per-user connections under <USER HIVE>\Printers
  • Delete Monitors under [HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors] (except Local Port)
  • Delete each driver under [HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows <arch>\Drivers\Version-3] (except on Vista don’t delete “Microsoft XPS Document Writer” and “Microsoft Shared Fax Driver”)
  • Vista: delete all files under “%windir%\System32\spool\drivers\<arch>\3” except for driver files associated with “Microsoft XPS Document Writer” and “Microsoft Shared Fax Driver”.  Ignore subdirectories.
  • XP: delete the “%windir%\System32\spool\drivers” folder
  • Set back the defaults : [HKLM\SYSTEM\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers] (AddPrinterDrivers=0)
  • Delete [HKLM\SYSTEM\CurrentControlSet\Control\Print\Providers\Internet Print Provider\Ports]
  • Add back these default values:
    • HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\USB Monitor
    • HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port
    • (XP) HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\BJ Language Monitor
    • (XP) HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\PJL Language Monitor
    • (Vista) HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\WSD Port
    • (If Fax driver was installed) HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\Microsoft Shared Fax Monitor

As you can see the light mode of this tool is a great first pass at troubleshooting a myriad of Print Spooler issues, with minimal risk/downtime for your users.  Give it a go and let us know how it works for you.

-Jeff Hagler

Internet Printing – How Windows decides if http or RPC is used for a Print Connection to an IPP Server

$
0
0

We often get asked from time to time how to force printers that a user has installed on their workstation using the IPP website to use RPC in lieu of the Internet printing protocol. There is a document available on TechNet that explains how to accomplish this:

http://technet.microsoft.com/en-us/library/cc757981(WS.10).aspx

(It’s as simple as changing the IE Zone Security to Medium-Low)

Often though, we run into customers who have already customized the settings in their IE Zone security and would still like to force the use of RPC for IPP printers without resetting those IE Zone settings to Medium-Low.

So what settings is the IPP printer really checking to accomplish this?

The process Windows uses to decide how to connect to a printer looks like this:

1. The OS checks if the following Registry Key is set:

[HKEY_CURRENT_USER\Printers\Settings\PreferredConnection]

If this key exists and its value is 0, the printer connection is using HTTP.

2. If the Registry Key is not set we are looking for two Settings:

a. Java Permissions

This Setting cannot be made inside IE. You have to configure the Settings with GPO.

clip_image002

Java Permissions need to be at least set to Medium Safety to use RPC.

b. ActiveX

Additionally the OS checks the Value from “Initialize and script ActiveX controls not marked as safe for scripting”.

If the Value is disabled we will use RPC otherwise we will use HTTP for the Print Connection.

clip_image003

A last pre-requisite is that the Protected Mode in IE needs to be turned off to use RPC

clip_image004

-Bernd Hogen

Performance issues due to Inactive Terminal Server Ports

$
0
0

Good morning AskPerf!  There are several issues that have been associated with a high number of inactive Terminal Server ports.  Delayed logon times to RDP sessions, failure of printers to redirect, and slow server performance due to registry bloat from all the ports. These inactive TS ports accumulate because the Remote Desktop Services Device Redirector service creates a new port every time an RDP session is established, but the ports are not always recycled.  Every RDP session can possibly create a new port, and every ended session means a new inactive port. Performance degradation is known to occur when 250 or more TS ports exist in the registry. Increasingly large numbers of redirected devices will exacerbate performance delays.

To eliminate any issues these TS ports may cause, we have a new Windows Server 2008 R2 hotfix.  The Hotfix can be downloaded here - KB 2655998 Long logon time when you establish an RD session to a Windows Server 2008 R2-based RD Session Host server if Printer Redirection is enabled.  This hotfix will prevent inactive TS ports from accumulating in the future, but you also have to clean up any currently inactive TS ports using the Fixit tool included in KB2655998.  The FixIT tool itself can also be downloaded directly from http://go.microsoft.com/?linkid=9799054.  The FixIt tool will remove the entries already accumulated under the TS ports registry key below:

[HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\{28d78fad-5a12-11d1-ae5b-0000f803a8c2}\##?#Root#RDPBUS#0000#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}]

Because the Hotfix and the FixIt perform two different functions, you must install the Hotfix and run the FixIt one time on your 2008 R2 Remote Desktop Server. 

For down-level operating systems such as Server 2003, Server 2008 Terminal Servers and Windows 7 in a VDI scenario, we highly recommend a scheduled task be created to execute the Inactive TS Port FixIt on a bi-weekly basis, since the hotfix only supports Windows Server 2008 R2 at this time.

The FixIt is an MSI package so you can run it silently with no user interaction required.  Follow these simple steps:

1. Locate the MSI file in Windows Explorer and note the exact path to it

2. Click Start and type in the following:

msiexec /package “path” /quiet

For example, if the MSI file MicrosoftFixit50833.msi is located in the “temp” folder of your C drive, then the path would be C:\temp\MicrosoftFixit50833.msi and the command would look like this:

msiexec /package “C:\temp\MicrosoftFixit50833.msi” /quiet

3. To add logging and check the results, use this command:

msiexec /package "c:\temp\MicrosoftFixit50833.msi" /quiet /log c:\temp\MSI50833.log

Additional Resources

-Jess Cunningham

Print update rollup available for Windows 7 & Windows Server 2008 R2

$
0
0

A new printing hotfix rollup was released that updates the core print spooler components localspl.dll, splwow64.exe, spoolsv.exe, win32spl.dll, and Winprint.dll.  This rollup is designed to reduce known issues such as printing performance, print spooler crashes, connectivity to print queues, and print driver installation. 

To download the update and get more information on the fixes included in this rollup, please see KB article 2647753:  Description of an update rollup for the printing core components in Windows 7 and in Windows Server 2008 R2

Many of the printing related support cases at Microsoft are resolved by one of the included hotfixes.   We highly recommend installing this hotfix rollup when troubleshooting any printing related issues. 

Migrating Print Queues quickly using PRINTBRM, configuration files, and the Generic/Text Only Driver

$
0
0

Good morning AskPerf! Digvijay here to chat about print server migration. All server admins have probably had an opportunity to migrate print servers. This process can be fast and easy when migrating between the same versions of operating systems; and can be done with a bit of effort moving between Operating Systems with different architecture (e.g., moving from 32-bit to 64-bit versions of Server 2008). However, things really get challenging when we have to migrate from an older Operating System to the latest Operating System on a different architecture. (e.g., from Windows 2003 Server x86 to Windows Server 2008 R2 x64). Fortunately, there are new tools such as the Print Management Console that ships with Server 2008 R2 or, if you prefer the command line interface, then you can use PRINTBRM.EXE. However, there can be some hurdles getting all the printers migrated successfully if we do not understand the Printer restoration process and fulfill necessary pre-requisites.

Things to keep in mind during printer migrations:

1. A print queue cannot function without a driver of the same server architecture (x86 or x64) on which it exists. 

2. Unless the print processor is migrated successfully, the print queue will not show up.

3. If you are migrating from a 32-bit Operating System to a 64-bit Operating System, it is important that you have 64-bit drivers pre-installed for all of your printers, along with the 32-bit drivers. (Remember that for a 64-bit client to print to print server hosted on 32-bit Operating System, you need the 64-bit version of the driver.)

4. When a cross-architecture migration includes the migration of printer language monitors, an error will occur during the process of restoring the printers to the destination server using the PRINTBRM command-line tool. The reason for the error is that language monitor driver architecture must always be the same as the source server architecture. Therefore, when migrating from x86-based architecture to x64-based platforms, language monitor migration cannot be successful. An error posted to the event log will state that the source architecture is not the same as that of the destination server.More info about this behavior can be found in the Print Services Migration Guide.

5. When using PRINTBRM, always run commands from an Administrative command prompt

If performing a 32-bit to 64-bit migration and all the existing client machines are 32-bit, then you will have to install 64-bit drivers for all the 32-bit drivers before starting the migration. It is common to have third-party 32-bit printer drivers that do not have 64-bit equivalents. For those instances, we typically suggest using universal drivers if available but contacting the printer vendor for their input is the safest bet.

During the Printer restore in cross-platform scenarios, if the backup file does not contain driver binaries for target server platform, PRINTBRM will attempt to install the drivers from the target server’s driver store if a matching driver is available. If a matching driver for the target platform is not available (either in the backup or on the server) then the print queue will not be created and there will be errors. See below:

image

image

We will see relevant events in the event viewer also:

image

image

image

So to make it easy for everyone to understand, here is the straightforward way to successfully restore all the printers:

1. Install 64-bit drivers on the Windows 2003 x86 Print server (source) or install all the required 64-bit drivers on the 2008/R2 Server (target). Keep in mind that the driver name string must be an exact match. If the names do not match exactly, the migration will treat it as if the driver is not present.

2. Take a backup of the printers on the Windows 2003 source server using the Print Management Console or printbrm.exe run from the Windows 2008 R2 Server.

3. Import the backup to the 2008 R2 server.

NOTE We need to preinstall any driver that has different components when installed on x86 than when installed on x64. As long as the driver is installed then the printer installation will not be blocked unless there is a non-existent Monitor value in the Printer registry key.  If the printer (not the driver) requires this setting, then we will need to install the driver that uses this monitor on the x64 machine.  If there is no x64 monitor provided by the vendor or if the vendor provides a new x64 monitor that uses a different name, then you will need to add a printer using the x64 version of the driver on the new machine since the vendor providing the driver did not provide compatibility to the new OS.

Keeping it simple

To avoid most of these driver and component pitfalls, it’s often easiest to switch all the print processors and print monitors on the source server over to some basic defaults ones (eg: cleaning up the PRINT registry before starting with the migration). This will speed up the process and maximize the number of queues successfully migrated.

Microsoft has provided a Spooler FixIT for Windows 2003/2008 to automate the spooler cleanup process. See our previous AskPerf blog entry for information about the functionality and usage of this tool.

We also recommend removing old and unused drivers from the server before taking a backup.

However, if you do not want to go through this lengthy process of fulfilling these prerequisites, are on a time crunch, want to quickly restore the print queue information on the target server and deal with the driver worries later, then read on.

In order to quickly get the queues migrated to the new server, we can create them using the “Generic / Text only” printer driver without restoring any of original the drivers on the target. Remember that we need to have 64-bit drivers present either in the package or on the target server for the restore to finish and the print queue to be available for printing.

Here are the steps to successfully migrate all of your print queues using the in-box “Generic/Text Only” print driver:

1. On the source Windows 2003 Server, change all print processors to winprint using the following setprinter.exe command:

SetPrinter.exe \\Servername 2 pPrintProcessor="Winprint"

This can also be accomplished using WMI:

wmic printer set PrintProcessor = WinPrint

2. Install the latest update for Printbrm on the target 2008R2 server:

KB 2636591  An update to improve the restore operation performance of Printbrm.exe in Windows 7 or in Windows Server 2008 R2

3. Install a local printer on the target 2008 R2 server using the Generic / Text Only driver and share it to enable the firewall exceptions for the Print Services.

4. From the Windows 2008R2 server, take a backup of the 2003 print server using the nobin switch

(we are using the nobin switch since we don’t want to migrate any of the print drivers):

Printbrm.exe –b –s \\servername –f nobin.printerexport –nobin

5. Next, we have to modify the contents of the backup files. Expand the printerexport backup to a directory and the replace the BrmDrivers.xml, BRMLMons.xml and PProcs.xml files. The command to extract the files to a directory is:

printbrm.exe  -r -d c:\temp\expand  -f nobin.printerexport

image

The Expanded directory will look similar to this:

image

 

  • BrmDrivers– contains a list of every driver installed on the computer and the driver files for each driver
  • BrmForms– contains a list of all the installed forms
  • BrmLMons– will usually contain either Windows NT x86 or Windows x64 as the architecture and a list of port monitors and the port monitor files installed
  • BrmPorts– contains a list of all the installed printer ports
  • BrmPrinters– contains a list of all printers that have been installed
  • BrmSpoolerAttrib– contains information about the spooler directory path and also indicates whether or not the source server was a cluster server

6. Now we need to edit the existing xml files and delete the information about unused print processors, language monitors and drivers in them and then create a new file without these components.

NOTE You may ask if we already set all the printers to use WinPrint as default print processor using the earlier methods, then why do I need to do this? The answer is that when we take a backup using PRINTBRM, the tool copies all the files from their respective directories inside C:\Windows\System32\spool\. Hence even if we have replaced the information on the queues, these files will be backed up and at the restore operation, they will also be restored. So even though we took a backup using the nobin switch, the xml files contains information about all the drivers. When you attempt to restore, the server will try to look for these drivers and restore them. Also, the -nobin switch only omits the driver files, the Language monitor and the Print processors are still backed-up.

For creating new BrmDrivers.xml, BRMLMons.xml and PProcs.xml files, we can use the following templates:

BrmDrivers.xml

===========

<PRINTERDRIVERS>
</PRINTERDRIVERS>

===========

BRMLMons.xml

==========

<LMONS Arch="Windows x64"/>

==========

PProcs.xml

========

<PPROCS>

</PPROCS>

=========

7. Once we have saved the new xml files in place, we will re-pack the backup using this command to get a new backup file that we will use to restore on the target server:

printbrm.exe  -b -d c:\temp\expand  -f newbackupfile.printerexport

8. Now that we have a clean printer backup, we will use the BRMConfig file to create all the printers using the “Generic / Text only” driver. The BRMConfig.xml file needs to have a mapping of all the drivers present on the source server that we want to restore with the Generic / Text Only driver.

A sample BRMConfig file may look like this:

=============

<BrmConfig>

<PLUGINS>

</PLUGINS>

<DriverMap>

<DRV old="HP Universal Printing PCL 6" new="Generic / Text Only"/>

<DRV old="HP Laserjet 5000 PCL 6" new="Generic / Text Only"/>

<DRV old="HP Universal Printing PS 6" new="Generic / Text Only"/>

</DriverMap>

</BrmConfig>

==================

For restoring all the printers from the backup, we need to mention all the existing drivers here.

NOTE The name of the driver has to be an exact match.

9. Once you have your brmconfig.xml file finished, run this command to start the restore:

printbrm –r –s \\2008R2Servername  –f newbackupfile.printerexport -c c:\temp\brmconfig.xml

NOTE We need to provide the absolute path of the BrmConfig.xml file here.

10. If all the mentioned instructions have been followed, you will see all the print queues getting created on the server using the Generic / Text Only driver.

image

This is where we started from:

image

And this is what we have accomplished:

image

11. Verify that the printers are working fine by sending some test pages to the printers.

12. After the queues are created on the target server, you can install the 64bit drivers for the printers as per your convenience and then switch the queues again.

Simplifying the BRMConfig.xml file creation

Considering most typical production scenarios, Print Servers you have hundreds of print queues and many print drivers, creating the BrmConfig.XML file for mapping each driver to Generic / Text Only driver can be real time consuming process. To ease the pain of creating this file yourself, there’s a BRMC tool that will come in handy. Download the tool from https://brmc.codeplex.com/ and run it from the directory where the BRMDrivers.XML is located. (So run it from the expanded location). Once the tool is run, and it creates a BRMConfig.xml file, pack the backup and then run the restore using the BrmConfig.XML file (to to step 8 and then go to step 10).

image

The BRMC tool creates the brmconfig.xml file that has the driver mappings. It also creates clean BrmDrivers.xml, BRMLMons.xml and PProcs.xml in the same directory. Be aware, the tool overwrites the original files, so save the original .printerexport file as a backup of BrmDrivers.xml, BRMLMons.xml and PProcs.xml.

Troubleshooting

If you encounter any errors during a Print Migration restore, check the event logs for possible causes. Common ones may be Print Processor is unknown, Unknown Port, or Print driver is unknown which usually means that the spooler was not cleaned properly on the source server when the initial backup was generated. Look for more in-depth troubleshooting of these kinds errors in a future blog.

I hope this information will come in handy the next time you are working through a printer migration. Until next time…

Addition Resources

-Digvijay

Windows 7 client machines show printers offline on Windows Server 2008 R2

$
0
0

Hello AskPerf! I’m Craig Marcho, a Senior Support Escalation Engineer in the Microsoft Platforms Core Team. There has been an increase in cases lately with Windows 7 Clients and Windows Server 2008 R2 Print Servers where Clients will show print queues as being offline, while at the same time, other Clients can print just fine and the Print Server shows the queue as online. While there are a few things that can cause this behavior, all of our normal troubleshooting steps were not providing relief for this particular issue.

We found that this issue occurs because a restricted client thread that runs in the spooler detects an offline print server. When a client thread detects that a print server is offline, Windows registers a polling loop to check the status of the print server. After the polling loop is registered, Windows queries the print server periodically to check whether it is back online.

In rare cases, a client thread that has a restricted token detects that a print server is offline. In this situation, Windows registers the polling loop in the context of this thread. However, the thread does not have sufficient rights to query the print server. Therefore, the polling request fails. Restarting the spooler or the client machine will obviously kill this thread running under the restricted context and will query the server with the correct security.

The hotfix became available on July 11th and you may download it here:

A network printer is displayed as offline incorrectly on a computer that is running Windows 7 or Windows Server 2008 R2

So if you have been experiencing this issue, or know someone who has, please spread the word that a fix is now available.

-Craig Marcho

Simplifying printing in Windows 8

$
0
0

Hello AskPerf Blog Readers!  Steven Sinofsky published the below blog last week just in case you missed it.  It was authored by one of our lead Program Managers on the Printing team.  It talks about some of the new exciting Printing features included in Windows 8.  Check it out!

Simplifying printing in Windows 8

-Blake


How to increase the number of Printers listed in Add Printer Wizard

$
0
0

Good morning AskPerf!  Akash Nema here from the Performance team.  Today we are going to chat about how to tweak the printer list presented when using the Add Printer Wizard in Windows 7.

We frequently see situations with Domain joined users on Windows Vista and higher that try to connect to a network printer.  When the user accesses the Add Printer Wizard, they are surprised to see the list of printers presented is limited to only 20 entries - this is by design.

clip_image001

The user can still search for a specific network printer by selecting "The printer I want isn't listed" and then selecting "Find printer in the directory based on location or feature".

clip_image002

(For more information on pre-populating this list with network discovery enabled - see the following walkthrough from our friends at MCP Magazine.)

The list of printers limit behavior is controlled by the following Group Policy setting for Printers:

Add Printer wizard - Network scan page (Managed network)

The policy sets the maximum number of printers (of each type) that the Add Printer wizard will display on a computer on a managed network when the computer is able to reach a domain controller (for example, a domain-joined laptop on a corporate network).  

To access the Group Policy Object, click Start, click Administrative Tools, and then click Group Policy Management. Or, click Start, click Run, type GPMC.MSC, and then press Enter.  

In Group Policy Management Editor, expand the following folders:

+Computer Configuration

    + Administrative Templates

          +Printers

                Add Printer wizard - Network scan page (Managed network)

clip_image003

This policy sets the maximum number of printers (of each type) that the Add Printer wizard will display on a computer on a managed network.

In order to view available TCP/IP printers or Web Services printers on your network, ensure that network discovery is turned on.  To turn on network discovery, click Start, click Control Panel, and then click Network and Internet.  On the page, click Network and Sharing Center.  On the Network and Sharing Center page, click Change advanced sharing settings.  On the Advanced sharing settings page, click the arrow next to Domain arrow, click turn on network discovery, and then click Save changes.

If this setting is disabled, the network scan page will not be displayed.  If this setting is not configured, the Add Printer wizard will display the default number of printers of each type:

  • Directory printers: 20
  • TCP/IP printers: 0
  • Web Services printers: 0
  • Bluetooth printers: 10
  • Shared printers: 0

If you would like to not display printers of a certain type, enable this policy and set the number of printers to display to 0.

Directory printers are any print queues that the domain print administrators have chosen to publish in Active Directory.

TCP/IP printers are print devices that you access directly using the TCP/IP protocol.

Web Services printers include both IPP and WSPAD print devices that are shared on the network.

Shared printers are print queues that show up in the deprecated “browse list”.

If you are a die-hard fan of users searching for their own printers (how the wizard looked with Windows XP), you can disable the Network Scan Page entirely via this same policy and the Wizard will go directly to the “Find printer in the directory based on location or feature” page of the Add Printer wizard.

Happy Printing!

-Akash Nema

Additional Resources

CAPS and CNAME Alias Records

$
0
0

Hi AskPerf readers, this is Paul from the Microsoft Remote Resources Support Team. We have been receiving a number of support questions concerning the use of Client Access Points (CAPs) and the use of CNAME alias records when referencing a Failover Clustered Print Spooler Resource.

Unlike a File Share Resource the multiple Client Access Point (CAP) feature is not supported when referencing a Print Spooler Resource. In Windows Server 2008 and 2008 R2 Failover Clusters, the interaction between the Cluster Service and the Server Service has changed and with this change shared printers are now associated with a single Spooler resource and are 'scoped' to the Network Name resource which is part of the Client Access Point (CAP). The share names when using Client Access Points (CAP) in Windows Server 2008 and 2008 R2 do not work in the same manner as they did with Windows Server 2003 Failover Print Clusters. This is due to intentional design changes that enhance the security when making Server Message Block (SMB) connections to the print spooler resource (the print share). A Failover Clustered Print Spooler consists of 3 components; a single Client Access Point (Network Name and IP Address), a single Spooler Resource and a “shared” Disk resource (Cluster Shared Volume; CSV).

The recommended method for accessing the Failover Clustered Print Server Resource is to login to any of the cluster nodes and open the Printer Management Console by clicking “Manage Printers” from the Failover Cluster Manager. This ensures you are accessing the clustered spooler resource and not the local spooler; an area that we receive numerous support calls about.

The Failover Cluster Manager will not prevent an administrator from creating more than one Client Access Point (Name and IP resource) in any group. When this is done in a Spooler resource group it is not immediately evident that this creates a potential configuration problem. The first indicator that this is not supported is when the admin attempts to use the Manage Printers feature from the Clustered Print Servers Action menu.

clip_image002

The Failover Cluster Manager displays the following configuration error clearly stating that the Spooler Resource is not configured correctly if there are multiple Network Names in the group.

image

An alternative way to manage the clustered Print Spooler Resource is directly through the Print Management Console (PMC). In the PMC, an admin can add the Clustered Spooler Resource Network Name to the list of Managed Print Servers.

If a spooler resource group has multiple CAPs defined and an administrator attempts to use the PMC to manage any of the CAP instances other than the first one defined when the resource was created, they’ll receive the second indicator that there is a configuration issue.  Attempts to add a printer to any of the additional CAP names in the PMC the following error is displayed indicating that the target is invalid.

image

While we have created a valid Network Name we have not created a target object container for the installation of printers:

Performing a query for the meaning of this error message using the NET Helpmsg command (http://technet.microsoft.com/en-us/library/bb490705.aspx). Typing the following command:

C:\>net helpmsg 67

The network name cannot be found.

(Net Helpmsg only accepts decimal error messages. 0x43 is 67 in decimal)

This gives us a more easy to read error - indicating that the configuration is not valid because the target does not exist.

Best practice recommendations around Clustered Spooler CAPs:

1. Choose one CAP to represent the Clustered Print Spooler resource.

2. For consistency the Group name and the CAP name should be the same to minimize confusion.

3. Publish this to the end user community to use only this CAP name to add printers to their workstations.

If the requirement is to provide multiple Client Access Points (CAPs) or Multiple Named references (aliases) then it is recommended that additional print spooler resource groups be created with the desired names and migrate the printers to the new spooler resources using the Print Management Console Export and Import feature.

The bottom line is there can be only one print spooler resource per Cluster Resource Group and a single network name reference to that resource.

Please review the following article which contains a very detailed explanation concerning the use of CNAME alias DNS entries and why they do not work as expected with Windows 2008 and 2008 R2 Failover Clusters:

File Share 'Scoping' in Windows Server 2008 Failover Clusters

-Paul

Windows 8 / Windows Server 2012: How do I print in Windows 8 Modern UI Applications?

$
0
0

It’s day 13 of our Launch Series and we are nearing the finish line.  Today we are going to look at ways to print from your Modern UI Apps.

So you have loaded Windows 8, and need to print from one of the new Modern Apps that have installed, but you do not see a ‘print’ icon, and there is no “File, Print, …” menu.  Windows 8 includes a new user interface that is designed to help users easily discover and install devices.  Print, Fax, and Scan devices are installed from the Settings or Devices charms:

Charms Bar with Devices and Settings

clip_image002

 

Adding Devices

To install a Printer using the Windows 8 Modern App style interface, do the following:

  1. Activate the Charms bar by swiping in from the right edge of a touch screen, pressing the Windows+C keys on the keyboard, or moving the mouse to the upper right corner of the display.
  2. Click or touch Settings, and then More PC Settings.
  3. Click or touch Devices, and then click or touch Add a device.
  4. Windows will scan the network for devices and display the list of printers that were found.  If the administrator has published printers to the active directory then they should show up at the top of the list.

Searching for Devices

clip_image003

5. Click or touch the device that you wish to install and it will be added to the list of devices. If the printer is using a Version 4 driver then no other user interaction is necessary to install the device.

Installed Printer

clip_image004

Printing from Windows 8 Modern Apps

Windows 8 has a new user interface for discovering and printing to print devices on a network.  A Modern App that runs in the Windows 8 interface may have a custom printing interface that is accessible via the application bar or it may provide a printing link similar to the Modern App style Internet Explorer application.

Additionally, the CTRL + P hotkey will activate the shell print dialog.

Note Not every Modern App will allow you to print from it.

To print a document from a Windows 8 Modern App, do the following:

1. Use the application user interface and select the Print option or use the CTRL + P hotkey to activate the Printing interface.

2. Choose a device to print to by clicking or touching the Print device icon:

Choosing a print device

clip_image006

3. A print preview and basic print settings are displayed. The document can be printed using the Print button:

Basic print settings

clip_image008

4. Clicking on More Settings will activate the advanced print settings dialog where page layout, paper and quality, and output options can be specified:

More settings

clip_image010

But now you’ve launched the Bing News app, and you are trying to print.  You do not see printers when you open the Charms and go to Devices.  You may see something like this:

No Printers

clip_image011

When you see this, it indicates that this app does not support printing, or that you have no printers installed.  We covered adding printers at the beginning of this blog, so we’ll take a guess that this app does not support printing.  What do you do from here?  Well, no need to worry.  Some Modern Apps do support opening the article in Internet Explorer, and you can then print the article from there.  To do this, you can right click in the article you are viewing, and see the following at the bottom of the screen:

View in Browser

clip_image012

Click on View in browser, and you can then print from Internet Explorer the same way we mentioned above.

The following apps installed with Windows 8 support printing from within the app:

  • Mail
  • Photos
  • News (only when viewing My News and use the open in browser method)
  • Bing Finance (when you use open in browser)
  • Maps

The following apps do not support printing from within the app:

  • Bing
  • Finance
  • Sports
  • Travel
  • Weather
  • Messaging
  • People
  • Calendar
  • SkyDrive

And there you have it, everything you need to know about printing in the new Windows 8 Modern App interface!  Thanks for reading!  We'll take a brief look at Windows PowerShell Web Access in tomorrow's post.

-AskPerf blog Team

Unable to connect to a printer using a CNAME record

$
0
0

Good morning AskPerf!  My name is Sandeep Bhatia and I work with Networking team here in Microsoft Support.  In today’s post, we will discuss Print issues when using a CNAME on Windows 2008 R2 Server, with a non-Microsoft DNS Servers.

When you connect a printer hosted on Windows 2008 R2 Server using a CNAME alias it returns the following error:

Operation could not be completed (Error 0x0000079). Double check the printer name and make sure that the printer is connected to the network.

clip_image002

This error is returned because of the optimization changes to the spooler service in Windows 2008 R2 Server.  The Print Spooler service uses the local names to service requests.  We’ve verified the name being used is correct and we can connect using the NetBIOS, FQDN and IP address of the server.

Step one is to make sure the target print server has the DNSOnWire registry key set to 1:

HKLM\SYSTEM\CurrentControlSet\Control\Print\DNSOneWire (REG_DWORD)

More details about this registry key is available at KB979602

However, if the DNS Server that the Print server is using is not a Windows based DNS Server we could still see a similar error issue because of how the DNS server formats the reply.  When the DNSOnWire registry key is set to 1, the Print Server on startup will send a recursive DNS query expecting to get both the host record (A) the CNAME refers to and the IP address of the host.

A sample DNS request and reply would look something like this:

Printserver.contoso.com Dnsserver.contoso.com DNS DNS:QueryId = 0x1389, QUERY (Standard query),

This will query for printservercname.contoso.com of type ALL on class Internet.

When the type is set to ALL, the client would expect all the information about the record in on packet.  This query is also a recursive query to the DNS server for the name printservercname.contoso.com.

The second step is to make sure is the DNS server supports both a query type of ALL as well as recursive queries. The DNS server should be compliant with RFC 1035.

In this example of a non-compliant DNS response, the reply from the DNS Server to the Print server for the DNS query, the DNS Server did not respond back with the IP Address of the Print Server.  It does send back the CNAME entry which points to the Print Server’ Host record, but the expectation is both should be returned.

Dnsserver.contoso.com Printserver.contoso.com DNS DNS:QueryId = 0x1389, QUERY (Standard query), Response - Success, Array[IP Address Of the DNS Servers]  {DNS:242, UDP:241, IPv4:240}

  - Flags:  Response, Opcode - QUERY (Standard query), AA, RD, RA, Rcode - Success

     RD:                (.......1........) Recursion desired

  - ARecord: printservercname.contoso.com of type CNAME on class Internet: Printserver.contoso.com

     ResourceName: printservercname.contoso.com

    ResourceType: CNAME, Canonical name for an alias, 5(0x5)

     ResourceClass: Internet, 1(0x1)

     TimeToLive: 1800 (0x708)

     ResourceDataLength: 15 (0xF)

     CName: Printserver.contoso.com

  + AuthorityRecord: in.Contoso.com of type NS on class Internet: DNSServer.Contoso.com

  + AdditionalRecord: DNSServer.Contoso.com of type Host Addr on class Internet: 192.168.1.100

 

Under an ideal scenario, the reply for a recursive query from the DNS Server should look more like:

Dnsserver.contoso.com Printserver.contoso.com DNS DNS:QueryId = 0x1389, QUERY (Standard query), Response - Success, Array[IP Address Of the DNS Servers]  {DNS:242, UDP:241, IPv4:240}

  + Flags:  Response, Opcode - QUERY (Standard query), AA, RD, RA, Rcode - Success

  - QRecord: Printservercname.contoso.com of type ALL on class Internet

     QuestionName: printserver.contoso.com

     QuestionType: A request for all records, 255(0xff)

     QuestionClass: Internet, 1(0x1)

  - ARecord: printservercname.contoso.com of type CNAME on class Internet: printserver.contoso.com

     ResourceName: printservercname.contoso.com

     ResourceType: CNAME, Canonical name for an alias, 5(0x5)

     ResourceClass: Internet, 1(0x1)

     TimeToLive: 3600 (0xE10)

     ResourceDataLength: 15 (0xF)

     CName: printserver.contoso.com

  - AdditionalRecord: printserver.contoso.com of type Host Addr on class Internet: 192.168.1.110

     ResourceName: printserver.contoso.com

     ResourceType: A, IPv4 address, 1(0x1)

     ResourceClass: Internet, 1(0x1)

     TimeToLive: 1200 (0x4B0)

     ResourceDataLength: 4 (0x4)

     IPAddress: 192.168.1.100

The key takeaway is that the configured DNS Server must return both the CNAME information and the IP Address of the Host in the same response in order to use printing to a CNAME successfully.

-Sandeep Bhatia

Additional Resources:

Microsoft Fixit for Printing UPDATED for Windows 7 & Windows Server 2008 R2

$
0
0

Hello folks.  This is a quick post to inform you that the “Microsoft Fixit for Printing” is now live with .msi packages for Windows 7 and Windows Server 2008 R2.  We know a lot of you have been asking for this for months, and we apologize for how long it took.  With that, please see the original blog post below, in which you will find the links.

Microsoft Fixit for Printing

http://blogs.technet.com/b/askperf/archive/2012/02/24/microsoft-fixit-for-printing.aspx

-AskPerf Blog team

Windows Server 2012 R2 Server Manager Crashes when clicking on Local Computer

$
0
0

Hello everyone!  I am writing today to raise awareness of an issue that we have come across recently.  I was working on a case with a customer where Server Manager in Windows Server 2012 would crash when he selected the Local Computer tab.  While debugging the issue, we found that Server Manager was crashing when trying to display a bitmap image for the Local Computer icon.  As we looked further into this, we found that when loading the bitmap image, it was trying to load a color profile in order to display the bitmap image properly.  If you have ever worked with color profiles, you will recall that they are stored on disk under the Spooler folder, “C:\windows\System32\spool\drivers\color” and you can view them by loading Color Management from Control Panel, or from the Start screen just type “Color Management” and it will come up.

Figure 1: Color Management loading color profiles properly:

image

We have discovered that if the Print Spooler Service is stopped or disabled in Windows Server 2012 R2, the color profiles will not load properly and Color Management will be blank.  If the color profiles are unable to load, then when Server Manager is trying to load them to display the bitmap icon, it returns a null and causes Server Manager to crash.  This issue only seems to occur in Windows Server 2012 R2 and not Windows Server 2012.

Microsoft is aware of the issue and we will keep you posted here.

-Craig

Windows 8.1 / Windows Server 2012 R2 – NFC “tap to connect” Printer Connections

$
0
0

Hello folks, today I am going to talk about a new feature that's available in Microsoft Windows 8.1 and Server 2012 R2 called NFC “tap to connect” Printing. NFC stands for Near Field Communication, which allows a two way communication between devices (endpoints) within a very close proximity; typically no more than few centimeters.

NFC “tap to connect” printing makes installation of printers very simple, in short, the user can just tap an NFC enabled device (for ex: a laptop or a tablet) on an NFC enabled printer and can then immediately install that particular printer.

This way, the user does not have to follow the traditional method of printer installation and does not need to know any details of the printer. For example, the print server where it’s hosted on, or the actual printer name itself. NFC “tap to connect” printing can be used for both WSD printers and shared printers.

There are printers that already have NFC capability built-in. The good news is, you can make any existing non-NFC printer NFC capable, by using an NFC tag. NFC tags are like stickers that can be programed to store the required information.

So how do we program an NFC tag? You can do this by using a simple PowerShell cmdlet called Write-PrinterNfcTag. Below are the steps to accomplish this:

1. Launch PowerShell as an administrator on a Windows 8.1 / 2012 R2 system that has NFC hardware capability. You can verify whether the system is NFC capable in device manager; if the system has an NFC device, it will be located under "Proximity devices" in device manager.

2. Type in the following command in the PowerShell window:

Write-PrinterNfcTag -Sharepath <UNC path of the printer>

Example:

Write-PrinterNfcTag -Sharepath \\Myprintserver\PrinterX

3. Once you run this command, you will be prompted to tap the NFC sticker (tag) against the device on which you ran the command. You now need to tap it against the NFC radio on the Windows 8.1 / 2012 R2 system within 30 seconds. Once tapped, the printer share information is written into the NFC tag. That’s it! Your NFC tag is now encoded with the printer share information and all you need to do is attach the NFC tag on the printer that you have specified in the Write-PrinterNfcTag command.

Note:

  • It is recommended to use NFC forum approved tags, of at least 1kb capacity
  • You can use the -Lock parameter with the above mentioned commands if you want to prevent further modification of the NFC tag once its programmed
  • To read an NFC tag, you can use the Read-PrinterNfcTag cmdlet

For a user to print, all they need to do is tap an NFC enabled device (for instance a tablet), on the NFC tag that’s attached on the printer, and the user will be prompted for the installation of that particular printer.

Please note, the NFC tag and the Printer never communicates with each other, the print process still uses the existing infrastructure and the network. NFC “tap to connect” printing is just a way to pair and install the printer and it does this like a charm!

Additional Resources

-Madhurjya


Windows 8.1 / Windows Server 2012 R2 - Printer Roaming

$
0
0

Hello again AskPerf!  Today I’m going to introduce a new Windows 8.1 feature called Printer Roaming.

Windows 8 provided the ability for users to roam a number of settings with their Microsoft account, such as the desktop background and web history.

Windows 8.1 extends this functionality to include roaming of printer connections, and this is primarily aimed at bring-your-own-device (BYOD) scenarios.

If you use Microsoft-connected accounts in your workplace (i.e. an account tied to a Hotmail.com or Outlook.com e-mail address), Windows 8.1 will store your UNC printer connections in the cloud and reconnect them on other Windows 8.1 devices you bring into the workplace.

clip_image001

So, let’s say you’ve manually mapped 3 printer connections (e.g. \\ServerName\PrinterShare) on your Windows 8.1 desktop PC at work.  When you bring a Windows 8.1 tablet into the workplace, the operating system will keep your printer connections in sync by automatically connecting them.

This feature is currently grouped with Other Windows Settings, which can be found in the SkyDrive options in the PC Settings application.

clip_image003

There are a few important caveats that I’d like to note.

  • Printer connections pushed through group policy are not automatically connected.  This feature is aimed at personalizing the experience for printers the user has manually connected.
  • Only queues utilizing v4 printer drivers will be roamed.  This guarantees compatibility with Windows RT clients.
  • This feature currently offers an on/off toggle.
  • If you use Microsoft-connected accounts in your workplace and want to disable Printer Roaming, all of the Sync settings in Other Windows Settings must also be disabled.
    • Individual printer connections cannot be configured to roam or not roam.

When considering Microsoft-connected accounts in your workplace, you can count Printer Roaming among the many valuable feature opportunities that become available.

-Aaron

Windows 8.1 / Windows Server 2012 R2 - In-box Scan App

$
0
0

Welcome back AskPerf readers!  Prior to Windows 8.1, scanning could be a relatively frustrating experience with many questions coming to mind…

  • Will my scanner work on Windows RT?
  • Do I need to download a driver from the manufacturer?
  • Do I have the necessary applications to acquire and edit an image?

With Windows 8.1, any Windows Image Acquisition (WIA) 2.0 compliant scanner will simply plug in and work, thanks to the magic of generic in-box scanner class drivers.

Since WIA 2.0 has been a logo requirement for all locally-connected scanner devices since June 2010, you can be fairly confident that any new scanner device will be supported.

The software to acquire images is also included with the operating system, thanks to the modern in-box Scan app.  Start typing “Scan” at the Start screen and its tile will be displayed.

image

The Scan app will occupy the left side of the screen, with scanner configuration options that are automatically detected based on the device.  You will also be presented with a choice of image formats and a location to save the image file to.

clip_image004

Once an image has been acquired, the Pictures modern app will be displayed to the right with the images you’ve scanned in.

clip_image006

At this point you’re free to import the image into any application of your choice, and have hopefully had a much better scan experience than in years past.

-Aaron

How to migrate local ports when doing print migration

$
0
0

Hello Askperf! My name is Tingu, and today I’m going to talk about an interesting print migration issue I had a few weeks ago.

We had a case where an application server was running on Windows 2003, where more than 400 print queues were created. The port was created as a local port to forward the print job in case of a failure as noted in the “Transfer documents to another printer” Technet article.

The port was configured as \\printservername\printer.  See example screenshot below:

Here, we were trying to move the application to a 2012 R2 server and wanted to migrate all the print queues to the new server. We used printbrmto migrate all of the local printers.  But the problem we ran into is that it did not migrate the local ports.

When we started the migration, we did not see the local ports listed:

Additionally after the migration, the port was not present:

We tried to add the port manually, but gave us the error “port already exists”.  Additionally, the registry shows that the printer is set to use the forwarder.

We really needed to get the local ports migrated as it can be a tedious task to re-create all the ports and map to their respective print queue. 

We created a test lab and saw the same issue while migrating.  It did not matter from/which OS we were migrating.  During the migration, we saw an event ID 81 on the 2012 R2 server. (This event is not triggered if you are migrating to 2003 or 2008R2):

Log Name:      Microsoft-Windows-PrintBRM/Admin
Source:        Microsoft-Windows-PrintBRM
Date:          12/25/2014
Event ID:      81
Task Category: Restore
Level:         Error
Keywords:      Print Queue
User:          Joe
Computer:      12345

Description:
Printbrm.exe (the Printer Migration Wizard or the command-line tool) failed to restore print queue test. The restore process will continue, skipping this queue. Error: 0x80070057 which is “invalid parameter”
Error: 0x80070057 which is pointing to “invalid parameter”

So what we determined is that when you use printbrm for migration, it will not migrate the local ports.  The reason is that the local port is specific to the server, and it may cause conflicts or not work if you migrate it to a different server.  But in our case it’s a forwarder, and we need it to be migrated.

Further testing revealed that if a local port to which the printer is mapped is already present on the destination server, then the migrated printers will use that local port for the printers.

For example: on the source server you have a printer mapped to LPT1, and the destination server has LPT1 port available; then after the migration, the printer will be set to use that port. We created a forwarder on the destination server for a test printer before migration, and after importing the printer, we see that the port is mapped accordingly.

Now the question is, how do we migrate multiple local ports at a time?

Here is what we did…

From the print management on a 2012 R2 server, we added the 2003 server.  Then we exported the list of ports to a .csv file:

This gave us the list of all ports needing to be migrated.  We then created a script to add the ports to the destination server.  As in our case, the destination server was Windows 2012 R2 server, so we used the powershell command Add-PrinterPort.

We copied all of the required ports into notepad, and saved it as a .ps1 file:

We ran the .ps1 file as admin, and all of the ports got created on the destination server!

Note If you have already tried the migration before creating the ports on the destination server, it may give you the error ‘port already exists’ while running the powershell command.  You may need to delete the printers migrated and restart the spooler and then retry the powershell command to complete the port creation.

After that, we followed the normal migration procedureand all printers got mapped to the correct port.

I hope this information will come in handy the next time you are working through a printer migration. 

-Tingu

Case of the blank print jobs

$
0
0

Hello Askperf! Anshuman here again with an interesting issue I worked a few weeks ago.

The following pop-up appeared on my workstation intermittently:

clip_image002

I then realized that I had the Send To OneNote printer set as my default printer.

The next time this occurred, I paused the print queue and noticed that the “Remote Desktop Redirected Printer Doc” document was getting spooled under my account. This was interesting because I had several remote desktop sessions opened to different machines from my workstation, and did not send any prints jobs from them.

clip_image003

So two questions came to mind:

1. Which RDS session is this coming from?

2. What was sending this print job?

I then thought to myself, “when in doubt, run Process Monitor!”

My first challenge was to figure out which server session this job was generated from. For this, I ensured that all the RDS sessions I established were using the command line option of of mstsc.exe (mstsc /v:servername). Next, I started process monitor on my workstation with a specific filter of “Process Name is mstsc.exe” and “Path contains .spl”. Since this issue was intermittent, I checked the “Drop filtered events” option. I also ensured that the Backing File option under File menu was pointing to a file, instead of Virtual Memory (pagefile). After a while the issue occurred, and procmon captured the following events:

clip_image004

One of the first things I noticed was the CloseFile operation immediately after the CreateFile operation. Typically, you will see a WriteFile operation in between these two operations. So mstsc is connecting to which server? That was easily found by examining the Command Line entry of mstsc captured in the pml file:

clip_image005

I logged into the problem server and launched procmon, ensuring that the Backing file option was set to point to a .pml file on a drive with enough space, and “Drop filtered events” was selected. Next I set up a filter “Path Contains tsclient” as well as “Path Contains RdpDr”. I then established an RDS session to the server from my work station and waited for the mysterious 0Kb print job. Once it happened, I had the following events in the pml file from the ProblemServer:

clip_image006

So there was an addon service that got installed on the printer server with a print driver. Disabling this ensured that those mysterious 0kb jobs ceased to occur.

-Anshuman

Office Applications only print 1-2 pages

$
0
0

Hello AskPerf!  My name is Susan, and today we are going to discuss an issue where printing through Office applications only produce 1-2 pages out of a multi-page document.

For example, you have Windows 2003/2008 Print Server with (e.g. Lexmark Universal v2 PS3 (2.2.5.71)) and Windows 8.1 clients attempt to print from Office applications; only the first page or 2nd pages will print. 

Other symptoms you may observe:

  • You can print only 2 pages, for example: page 2-3 of a 10 page document
  • You print just fine out of other applications
  • If you print to PDF from Office, the files print as expected

Cause There are two main causes of the behavior above.  The first is missing fonts from the Print Server - the buffer simply fills and overflows and only ~2 pages will print.  The second cause is a legacy Bluetooth service is installed as well as its add-on component.

Resolution #1

Install the missing fonts on the Print Server.  You do not need to install Office, only the fonts.

Here are the fonts that should be installed:

Fonts that are installed with Microsoft Office 2013 products

Fonts supplied with* Office 2010

Office 2010 printing errors with Calibri font when printing through a Windows Server 2003 or 2008 print server

Resolution #2

For the Bluetooth Driver, there are two pieces: the service as well as the add-on that is registered under the Office applications.  The add-ons should be disabled for all Office applications under multiple keys.

Option 1

  1. Check with the vendor to determine if there are any updates to your Bluetooth device.

Option 2

  1. Uninstall Bluetooth       

a.      Please confirm it is completely uninstalled via checking MSCONFIG and running Services.msc

b.      Next, you will need to modify registry keys in two  locations  and change the loadbehavior to 0 or delete. 

           For example: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\AddinsBtmoffice.connect

And also under  BTMOffice.connect is loaded in Access, Excel, Project, Outlook, Powerpoint, Word for each application.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Access\Addins\AddinsBtmoffice.connect

And also under  BTMOffice.connect is loaded in Access, Excel, Project, Outlook, Powerpoint, Word for each application.

Option 3

  1. Disable Bluetooth as a test

a.      Stop the service from running in Services.msc

b.      Change the loadbehavior in the above registry keys to 0

-Susan

Viewing all 71 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>