Deploying printers via Group Policy and getting them pushed out the right way as well as solving driver installation issues (0x80070bcb Specified printer driver was not found and needs to be downloaded)

So we recently upgraded our printing infrastructure with a whole new lot of printers and software (along with a shiny new version of PaperCut MF) and have implemented a global queue or better known as Follow Me Printing.  So how do we go about pushing out all the new global printers to our users.  Well along with the 50 other projects we have on the go, one of them is a clean up of our group policy, so after removing around 15 GPOs related to our old printers I got to work.

So for starters I’ve created a GPO which will contain all of our Follow Me Printing settings, including deploying the PaperCut Client and Global Queue Printers. In our environment we have a mix of Windows XP, Windows Vista and Windows 7 which will all handle printers being deployed via Group Policy differently (Microsoft make things so easy, don’t they).  For XP, things are simple, simply add the printer to be deployed either by user or computer preference under control panel > printers. For Vista and 7 however this is where it gets tricky.  If you are using a driver which has been loaded on the machine before, the printer will deploy, otherwise you will receive an error in the event log such as the following:

The user 'Printer Name Here' preference item in the 'Group Policy Object
{GUID-GOES-HERE}' Group Policy object did not apply because it failed with
error code '0x80070bcb The specified printer driver was not found on the system
and needs to be downloaded.' This error was suppressed.

This basically means that the client couldn’t download the driver, but the real reason is because of UAC and the computer not requesting permission to install a driver. Thankfully there is a Policy that we can enable that will allow us to set the permission requirements during printer driver installation.

Using the Point and Print Restrictions Policy we can enable printer driver installation without it getting hassled by UAC. Under Windows Vista it is a User Policy and on Windows 7 it is a Computer Policy (I have both enabled for good measure). So enable toe Point and Print Restrictions Policy and change the following options:

  • When installing drivers for a new connection: Do not show warning or elevation prompt
  • When updating drivers for an existing connection: Show warning only

Once we have configured the Point and Print Restrictions Policy printers will download and install on any client computer that the Object is targeting.

Hope that helps a few people out when setting up and configuring their Group Policy Printer Distribution, any queries please comment.

Getting back the OneNote 2010 Printer by Installing a generic printer driver, and then configure it for Microsoft Office OneNote 2010

So we had a few users delete their OneNote printer from the Printers List in Windows.  OneNote is a great program and is bolstered by the use of the printer allowing you to push pretty much anything into OneNote. We ran an office repair but the printer didn’t actually return for our users, so I started looking at how the OneNote printer is configured and created a new instance of the printer.  The following is basically a walk through of installing and configuring a local printer for OneNote 2010 (also applies to OneNote 2007).

First off we need to install the generic printer driver in Windows. To do this, follow these steps:

  1. Click Start, type printers in the Start Search box, and then click Devices and Printers in the Programs list.
  2. On the left side of the page near the top, click Add a printer.
  3. In the Add Printer dialog box, click Add a local printer.
  4. Click to select the Use an existing port option, select the appropriate port, and then click Next. For example, you can select LPT1.
  5. Under Manufacturer, select Generic, select Generic / Text Only under Printers, and then click Next.
  6. If you receive a message about drivers, click to select the Use the driver that is currently installed (recommended) option, and then click Next:
  7. Click Next, and then click Finish.

So now how do we go about configuring this newly installed generic printer for use with OneNote, follow these instructions for doing that:

  1. In the printer list, right-click the Generic / Text only printer, and then click Printer Properties.
  2. Click the Ports tab, and then click to select the Send To Microsoft OneNote Port check box.
  3. Click the Advanced Tab, select Send to Microsoft OneNote Driver in the Driver list, and then click Print Processor.
  4. Under Print processor, select winprint, select RAW under Default data type, and then click OK.
  5. Click the General tab, change the name of the printer to Send To OneNote 2010, and then click OK.

And now we can finally use the printer to submit pretty much anything to OneNote 2010.  We didn’t really learn why the Office repair didn’t re-add the printer as the research we found on the internet led us to believe that it would add the printer, but just in case it doesn’t you now know how to manually add it.

Increase the number of visible users per page on group creation and user selection screen in Moodle 2.2

So we had a query come through our Help Desk recently to ask if we can increase the users in the user selection box as staff members were having difficulty managing their classes and creating groups as they couldn’t CTRL click and had to type in the names of their students. So I started having a dig around the code in Moodle to find out if we can change the default value.

After poking around the source code and looking at some search results on Google, I found the file that was needed and it can be found in user/selector/lib.php – Line: 740

So we want to go to line and change MAX_USERS_PER_PAGE to equal what we want (a higher value, and in this case we gave it 500). The following is an extract of what we are changing.

 * User selector subclass for the list of users who are not in a certain group.
 * Used on the add group members page.
class group_non_members_selector extends groups_user_selector_base {
    const MAX_USERS_PER_PAGE = 500;

Save the file and now reload your group creation page and you should now be able to select multiple users in a large user base list. Also, it is important to note that the MAX_USERS_PER_PAGE variable is in multiple places and affects different user selection boxes depending on where you edit it.