Since Windows 7, Microsoft has a location-aware printing feature in the professional editions of Windows, which allows you to set a different default printer for multiple networks. It’s only supported on laptops or mobile devices though, where you typically need the feature.
Once you configure the default printers for the desired network, Windows will automatically adjust your default printer when connected to those particular networks. For instance, have your home printer set as default for your home network and have the work printer default for when connected to the work network.
To set the default printers for networks, go to the Control Panel and open the Devices and Printers windows. Click any printer and then click the Manage Default Printers button on the toolbar. Then you can choose the Change my default printer when I change networks option and configure the desired printers for the networks you’d like.
Windows 10 Pro
I have been searching for a solution to this as well and I have found what I consider to be an acceptable workaround.
You can use the Task Scheduler to run a batch file that will set your default printer. You can set the task to run automatically when you connect to a specific wireless network.
I set up two tasks – one for work and one for home. It successfully changes the default printer automatically with no visible indication (doesn’t require user interaction and no windows pop up or anything).
The complete process would be the following:
First, go to Event Viewer in Administrative Tools and under Applications and Services Logs, navigate to Microsoft…Windows…WLAN-AutoConfig…Operational. Look through each entry in the log until you find one that says “WLAN AutoConfig service has successfully connected to a wireless network” then look at the Event ID (probably 8001). On that screen somewhere you should be able to find the SSID of the specific network that log entry refers to. For each network you would like the default printer to change on, find the log entry and do this:
Over on the right under Actions, scroll down and click on ‘Attach Task To This Event’ – not to be confused with ‘Attach a Task To this Log’, follow the Task Wizard, name it whatever you want, when you get to Action, select ‘Start a Program’, point it to your batch file, click Next and on the Finish screen, check the box for ‘Open the Properties dialog for this task when I click Finish’ On the Properties dialog, under Security Options, select ‘Run whether user is logged on or not’ and check the box for ‘Run with highest privileges’ (it will ask for the user account password later). Go to the ‘Triggers’ tab and select ‘Edit’, switch the Settings from Basic to Custom and click on ‘New Event Filter’ then click on the ‘XML’ tab, check the box for ‘Edit query manually’ and paste in the following:
<QueryList> <Query Id="0" Path="Microsoft-Windows-WLAN-AutoConfig/Operational"> <Select Path="Microsoft-Windows-WLAN-AutoConfig/Operational">*[System[Provider[@Name='Microsoft-Windows-WLAN-AutoConfig'] and (EventID=8001)]]and *[EventData[Data[@Name='SSID']='YOUR NETWORK NAME']]</Select> </Query> </QueryList>
Be sure EventID is correct and put in the appropriate SSID with single quotes. Click on OK and then ensure the box for ‘Enabled’ is checked and click OK again. Next go to the ‘Conditions’ tab and make sure the box is unchecked for ‘Start the task only if the computer is on AC power’ – DO NOT try to use the setting under ‘Network’ where it says ‘Start only if the following network is available’ – this will not work. Click OK and you are done for this one.
Repeat the process for each wireless network you want to have a different default printer on – each will need its own batch file and corresponding scheduled task. Hopefully I remembered all the details! Let me know 🙂