Summary
Windows updates released August 10, 2021 and later will, by default, require administrative privilege to install drivers. We made this change in default behavior to address the risk in all Windows devices, including devices that do not use Point and Print or print functionality. For more information, see Point and Print Default Behavior Change and CVE-2021-34481.
By default, non-administrator users will no longer be able to do the following using Point and Print without an elevation of privilege to administrator:
-
Install new printers using drivers on a remote computer or server
-
Update existing printer drivers using drivers from remote computer or server
Note If you are not using Point and Print, you should not be affected by this change and will be protected by default after installing updates released August 10, 2021 or later.
Important Printing clients in your environment must have an update released January 12, 2021 or later before installing updates release September 14, 2021. Please see Q2 in “Frequently asked questions” below for more information.
Modify the default driver installation behavior using a registry key
You can modify this default behavior using the registry key in the table below. However, be very careful when using a value of zero (0) because doing that makes devices vulnerable. If you must use the registry value of 0 in your environment, we recommend using it temporarily while you adjust your environment to allow Windows devices to use the value of one (1).
Registry location |
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint |
DWord name |
RestrictDriverInstallationToAdministrators |
Value data |
Default behavior: Setting this value to 1 or if the key is not defined or not present, will require administrator privilege to install any printer driver when using Point and Print. This registry key will override all Point and Print Restrictions Group Policy settings and ensures that only administrators can install printer drivers from a print server using Point and Print. Setting the value to 0 allows non-administrators to install signed and unsigned drivers to a print server but does not override the Point and Print Group Policy settings. Consequently, the Point and Print Restrictions Group Policy settings can override this registry key setting to prevent non-administrators from installing signed and unsigned print drivers from a print server. Some administrators might set the value to 0 to allow non-admins to install and update drivers after adding additional restrictions, including adding a policy setting that constrains where drivers can be installed from. Important There is no combination of mitigations that is equivalent to setting RestrictDriverInstallationToAdministrators to 1. Note Updates released July 6, 2021 or later have a default of 0 (disabled) until the installation of updates released August 10, 2021 or later. Updates released August 10, 2021 or later have a default of 1 (enabled). |
Restart requirements |
No restart is required when creating or modifying this registry value. |
Note Windows updates will not set or change the registry key. You can set the registry key before or after installing updates released August 10, 2021 or later.
Automate the addition of RestrictDriverInstallationToAdministrators registry value
To automate the addition of the RestrictDriverInstallationToAdministrators registry value, follow these steps:
-
Open a Command Prompt window (cmd.exe) with elevated permissions.
-
Type the following command and then press Enter:
reg add «HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint» /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f
Set RestrictDriverInstallationToAdministrators using Group Policy
After installing updates released October 12, 2021 or later, you can also set RestrictDriverInstallationToAdministrators using a Group Policy, using the following instructions:
-
Open the group policy editor tool and go to Computer Configuration > Administrative Templates > Printers.
-
Set the Limits print driver installation to Administrators setting to «Enabled». This will set the registry value of RestrictDriverInstallationToAdministrators to 1.
Install print drivers when the new default setting is enforced
If you set RestrictDriverInstallationToAdministrators as not defined or to 1, depending on your environment, users must use one of the following methods to install printers:
-
Provide an administrator username and password when prompted for credentials when attempting to install a printer driver.
-
Include the necessary printer drivers in the OS image.
-
Temporarily set RestrictDriverInstallationToAdministrators to 0 to install printer drivers.
Note If you cannot install printer drivers, even with administrator privilege, you must disable the Only use Package Point and Print Group Policy.
Recommended settings and partial mitigations for environments that cannot use the default behavior
The following mitigations can help secure all environments, but especially if you must set RestrictDriverInstallationToAdministrators to 0. These mitigations do not completely address the vulnerabilities in CVE-2021-34481.
Important There is no combination of mitigations that is equivalent to setting RestrictDriverInstallationToAdministrators to 1.
Verify that RpcAuthnLevelPrivacyEnabled is set to 1 or not defined
Verify that RpcAuthnLevelPrivacyEnabled is set to 1 or not defined as described in Managing deployment of Printer RPC binding changes for CVE-2021-1678 (KB4599464).
Verify that Security Prompts are enabled for Point and Print
Verify that Security Prompts are enabled for Point and Print as described in KB5005010: Restricting installation of new printer drivers after applying the July 6, 2021 updates.
Permit users to only connect to specific print servers that you trust
This policy, Point and Print Restrictions, applies to Point and Print printers using a non-package-aware driver on the server.
Use the following steps:
-
Open the Group Policy Management Console (GPMC).
-
In the GPMC console tree, go to the domain or organizational unit (OU) that stores the user accounts for which you want to modify printer driver security settings.
-
Right-click the appropriate domain or OU and click Create a GPO in this domain, and Link it here.Type a name for the new Group Policy Object (GPO) and then click OK.
-
Right-click the GPO that you created and then click Edit.
-
In the Group Policy Management Editor window, click Computer Configuration, click Policies, click Administrative Templates, and then click Printers.
-
Right-click Point and Print Restrictions, and then click Edit.
-
In the Point and Print Restrictions dialog, click Enabled.
-
Select the Users can only point and print to these servers checkbox if it is not already selected.
-
Enter the fully qualified server names. Separate each name by using a semicolon (;).
Note After installing updates released September 21, 2021 or later, you can configure this group policy with a period or dot (.) delimited IP addresses interchangeably with fully qualified host names.
-
In the When installing drivers for a new connection box, select Show warning and Elevated Prompt.
-
In the When updating drivers for an existing connection box, select Show warning and Elevated Prompt.
-
Click OK.
Permit users to only connect to specific Package Point and Print servers that you trust
This policy, Package Point and Print — Approved servers, will restrict the client behavior to only allow Point and Print connections to defined servers that use package-aware drivers.
Use the following steps:
-
On the domain controller, select Start, select Administrative Tools, and then select Group Policy Management. Alternatively, select Start, select Run, type GPMC.MSC, and then press Enter.
-
Expand the forest and then expand the domains.
-
Under your domain, select the OU where you want to create this policy.
-
Right-click the OU and then select Create a GPO in this domain, and link it here.
-
Give the GPO a name, and then select OK.
-
Right-click the newly created Group Policy Object and then select Edit to open the Group Policy Management Editor.
-
In the Group Policy Management Editor, expand the following folders:
-
Computer Configuration
-
Policies
-
Administrative Templates
-
Local Computer Polices
-
Printers
-
-
Enable Package Point and Print — Approved servers and select the Show… button.
-
Enter the fully qualified server names. Separate each name by using a semicolon (;).
Note After installing updates released September 21, 2021 or later, you can configure this group policy with a period or dot (.) delimited IP addresses interchangeably with fully qualified host names.
Frequently asked questions
Q1: Every time I attempt to print, I receive a prompt saying, «Do you trust this printer,» and it requires administrator credentials to continue. Is this expected?
A1:Being prompted for every print job is not expected. The majority of environments or devices that experience this issue will be resolved by installing updates released October 12, 2021 or later. These updates address an issue related to print servers and print clients not being in the same time zone.
If you are still having this issue after installing updates released October 12, 2021 or later, you might need to contact your printer manufacturer for updated drivers. This issue might also occur when a print driver on the print client and the print server use the same filename, but the server has a newer version of the driver file. When the print client connects to the print server, it finds a newer driver file and is prompted to update the drivers on the print client. However, the file in the package it is offered for installation does not include the newer driver file version.
The files being compared are the drivers within the spool folder, usually in C:\Windows\System32\spool\drivers\x64\3 on both the print client and print server. The driver package being offered for installation will usually be in C:\Windows\System32\spool\drivers\x64\PCC on the print server. After the files in the \3 folder are compared between devices, if they do not match, the package in PCC is installed. If the files in the print server’s \3 folder are not from the same printer driver that PCC offers to the client, the print client will compare the files and find the mismatch every time it prints.
To mitigate this issue, verify that you are using the latest drivers for all your printing devices. Where possible, use the same version of the print driver on the print client and print server. If updating drivers in your environment does not resolve the issue, please contact support for your printer manufacturer (OEM).
Q2: I installed updates released September 14, 2021 and some Windows devices cannot print to network printers. Is there an order I need to install updates on print clients and print servers?
A2: Before installing updates released September 14, 2021 or later on print servers, print clients must have installed updates released January 12, 2021 or later. Windows devices will not print if they have not installed an update released January 12, 2021 or later.
Note You do not need to install earlier updates and can install any update after January 12, 2021 on printing clients. We recommend that you install the latest cumulative update on both clients and servers.
Resources
-
Point and Print Default Behavior Change
-
Introduction to Point and Print
-
Add and Remove Drivers to an offline Windows Image
-
Point and Print with Driver Packages – Windows drivers | Microsoft Docs
Ошибка 0x0000011b «Windows не удается подключиться к принтеру» — одна из самых распространённых проблем при установке или подключении к уже установленному сетевому принтеру в актуальных версиях Windows. Однако, в большинстве случаев она сравнительно легко решаема.
В этой инструкции подробно о способах исправить ошибку 0x0000011b при подключении к принтеру в Windows 11 и Windows 10, один из которых, с большой вероятностью, сработает в вашей ситуации.
Отключение CVE-2021-1678 Mitigation (защита от CVE-2021-1678)
Основная причина появления и широкого распространения ситуации «В ходе операции произошла ошибка 0x0000011b» — выпущенные Майкрософт обновления для защиты от уязвимости в удаленном вызове процедур при подключении принтера (Windows Print Spooler Spoofing Vulnerability), сама уязвимость получила код CVE-2021-1678.
Обновления выходили под номерами KB5005565, KB5005652 и KB5006670, но в текущих версиях Windows 11 и Windows 10 вы не найдёте их в списке доступных к удалению. Тем не менее, отключить защиту от CVE-2021-1678 и, с большой вероятность, исправить ошибку 0x0000011b можно:
- Действия следует выполнять на «раздающем» доступ к принтеру компьютере. Нажмите правой кнопкой мыши по кнопке «Пуск», выберите пункт «Выполнить», введите regedit в открывшееся окно и нажмите Enter.
- В открывшемся редакторе реестра перейдите к разделу
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print
- Нажмите правой кнопкой мыши в пустом месте правой панели редактора реестра и выберите пункт «Создать» — «Параметр DWORD (32 бита)».
- Задайте имя
RpcAuthnLevelPrivacyEnabled
для вновь созданного параметра.
- Установите значение 0 для него.
- Закройте редактор реестра и перезагрузите компьютер.
После перезагрузки попробуйте вновь подключиться к принтеру, с большой вероятностью, ошибка 0x0000011b больше не появится.
Если предыдущий метод не помог, можно попробовать другие способы исправить проблему:
- Проверьте, есть ли в реестре Windows раздел
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers
и содержит ли он какие-либо значения или подразделы (по умолчанию содержать не должен, при наличии — можно попробовать удалить, но имеет смысл создать точку восстановления системы перед этим). Также попробуйте создать в этом разделе подраздел с именем PointAndPrint, а в нём — параметр RestrictDriverInstallationToAdministrators со значением 0 или использовать команду
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f
в командной строке, запущенной от имени администратора.
- Маловероятно, что сработает, но: попробуйте использовать встроенное средство устранения неполадок принтера, подробнее: Устранение неполадок в Windows 11, Устранение неполадок Windows 10.
- Этот способ не очень желателен, поскольку открывает уязвимости, закрытые соответствующими обновлениями. Проверьте, возможно ли удаление обновлений KB5005565, KB5005652 и KB5006670 на вашем компьютере. Проще всего сделать это, запустив командную строку от имени администратора и введя команду (пример для первого из обновлений в списке):
wusa /uninstall /kb:5005565
Возможны и другие варианты: Как удалить обновления Windows 10, Как удалить обновления Windows 11. Если вы не нашли этого обновления, а при удалении в командной строке появляется сообщение «Обновление не установлено на этом компьютере», значит этот метод в вашем случае не подходит.
- Если принтер уже установлен, но не удаётся подключиться к нему, попробуйте удалить его в Панель управления — Устройства и принтеры, а затем выполнить повторную установку.
Надеюсь, один из способов помог в решении, ошибка 0x0000011b исправлена, а принтер успешно подключён.
When I started this blog, it was all about showing you the options you have when you want to make sure the end user (without admin permissions) can still install printer drivers when needed.
After the whole Nightmare Printer rollercoaster, I am also showing you how to deal with all of the Printer Nightmare update issues, as these updates could break your possibility to print.
I will divide this blog into multiple parts: The first four parts will show you how to ensure your users can install Printer Drivers, and the other parts are all about the Printer Nightmare.
1. Installing Printer Drivers with no admin Permissions
Implementing admin less can be difficult, especially when users are accustomed to installing printers on their own. To alleviate some of the trouble of introducing admin less, you can allow your end-users to install printer drivers on their own.
Of course, Printix or Microsoft Universal Printer are way better solutions when you have some “static” printers. But this solution can be useful for frontline workers who suddenly need to use a printer somewhere.
First, I want to show you how you can do this when having your old-fashioned GPOs. You need to configure 2 options:
The first one you need to configure:
And the second one:
*Class = Printer {4658ee7e-f050-11d1-b6bd-00c04fa372a7}
*Class = PNPPrinters {4d36e979-e325-11ce-bfc1-08002be10318}
The full list of device classes is available:
https://docs.microsoft.com/en-us/windows-hardware/drivers/install/system-defined-device-setup-classes-available-to-vendors?redirectedfrom=MSDN
But when going Cloud Native, you want to configure these settings in Intune. I will give you some options.
2. Administrative Templates
The first one is a Windows 10 Administrative Template. You will need to search for “Allow installation of devices using drivers…” and add the 2 classes, as I showed you with the old-fashioned GPOs.
But I am missing the option to disable: “Prevent users from installing printer drivers”? So the first thing that will come to mind, use group policy analytics! So I did…
As shown above, MDM support is 0%. That’s bad news.
3.PowerShell Script
You could also use a Powershell script to deploy these kinds of settings. Here is the PowerShell Script
$Regpath = "HKLM:\Software\Policies\Microsoft\Windows\DriverInstall\Restrictions\AllowUserDeviceClasses"
$RegAllowPath = "HKLM:\Software\Policies\Microsoft\Windows\DriverInstall\Restrictions"
$name1 = "printer"
$value1 = "{4658ee7e-f050-11d1-b6bd-00c04fa372a7}"
$name2 = "PNPprinter"
$value2 ="{4d36e979-e325-11ce-bfc1-08002be10318}"
$name3="AllowUserDeviceClasses"
$value3 = 1
New-ItemProperty -Path $RegPath -Name $name1 -Value $value1 -PropertyType String | Out-Null
New-ItemProperty -Path $RegPath -Name $name2 -Value $value2 -PropertyType String | Out-Null
New-ItemProperty -Path $RegallowPath -Name $name3 -Value $value3 -PropertyType DWord | Out-Null
Or, create an Intunewinapp, as I did with slightly more advanced PowerShell scripts. It contains the IntuneWinapp and a PowerShell script to deploy it to your tenant. (Remember to change the source path.)
https://call4cloud.nl/wp-content/uploads/2020/10/Windows10_AllowPrinterInstallation.zip
Now, when you deploy the intunewinapp, go and install a new printer with a fresh printer driver! As shown below, there is no UAC prompt!
4. Settings Catalog
And there it is… “Prevent users from installing Printer drivers when connecting to shared printers” is now available from the Settings Catalog
Now we have all settings available, let’s also add the: Allow installation of devices using drivers that match these device setup classes:
{4d36e979-e325-11ce-bfc1-08002be10318}
{4658ee7e-f050-11d1-b6bd-00c04fa372a7}
5. Printer Nightmare Updates KB5005010
Of course, everyone now is aware of the Printer Nightmare issue(s). Luckily Microsoft is trying to fix it and has already released a nice update/patch to solve it… Unfortunately, things can break when this update is deployed.
Today (01-09-2021) I received an email about this blog…. as it wasn’t working anymore for him. So let’s take a look at the issue. After installing the Printer Nightmare update you could encounter a nice UAC prompt warning when installing a shared printer. With the update deployed you still need to enter the admin credentials…. even when you have applied the settings, I mentioned earlier.
So how will we fix this and still be safe against the printer nightmare issue? It’s a no-brainer, to do nothing. When you still want to make use of the possibility to let users install drivers on their own please combine Point and Print restrictions and add this wonderful registry key:
RestrictDriverInstallationToAdministrators DWORD 0
If you don’t want to use PowerShell to define this RestrictDriverInstallationToAdministrators registry key, you could also create a new settings catalog and search for Limits Print driver installation to Administrators
When you don’t configure this key or configure it to 1, only users with administrative permissions may install the shared printer. But when you configure this key to zero and combine it with Point and Print restrictions, you can ensure that end-users can only install printers from “allowed and trusted” servers. An error will be shown if an end-user tries to install a printer from a non-trusted server.
So you want to make sure your users can only use point and print to these servers as you could configure with this old-school legacy GPO
Now, you have got 3 possible options to deal with this.
- PowerShell Script
- Creating a new Settings Catalog
- Preinstalling the Printers and Drivers on the devices
1.The PowerShell script.
Let’s start with the PowerShell script. Here is the PowerShell script you could upload to Intune. Remember to change the value of YourPrinterServer to your Print Server.
$keypath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint
$keypath2 = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PackagePointAndPrint"
$keypath3= "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\ListofServers"
$keypath4 = "HKLM:\Software\Policies\Microsoft\Windows\DriverInstall\Restrictions\AllowUserDeviceClasses"
$keypath5 = "HKLM:\Software\Policies\Microsoft\Windows\DriverInstall\Restrictions"
New-Item -Path $keyPath -force | Out-Null
New-Item -Path $keyPath2 -force | Out-Null
New-Item -Path $keyPath3 -force | Out-Null
New-Item -Path $keypath5 -force | Out-Null
New-Item -Path $keypath4 -force | Out-Null
new-ItemProperty -Path $keypath -Name RestrictDriverInstallationToAdministrators -Value 0 -force
new-ItemProperty -Path $keypath -Name TrustedServers -Value 1 -force
new-ItemProperty -Path $keypath -Name Restricted -Value 1 -force
new-ItemProperty -Path $keypath -Name NoWarningNoElevationOnInstall -Value 1 -force
new-ItemProperty -Path $keypath -Name TrustedServers -Value 1 -force
new-ItemProperty -Path $keypath -Name UpdatePromptSettings -Value 2 -force
new-itemproperty -path $keyPath -Name Serverlist -type string -value YourPrinterServer -force
new-ItemProperty -Path $keypath2 -Name PackagePointAndPrintServerList -Value 1 -force
new-ItemProperty -Path $keypath3 -Name YourPrinterserver -Value YourPrinterServer -force
$name1 = "printer"
$value1 = "{4658ee7e-f050-11d1-b6bd-00c04fa372a7}"
$name2 = "PNPprinter"
$value2 ="{4d36e979-e325-11ce-bfc1-08002be10318}"
$name3="AllowUserDeviceClasses"
$value3 = 1
New-ItemProperty -Path $keypath4 -Name $name3 -Value $value3 -PropertyType Dword | Out-Null
New-ItemProperty -Path $keypath5 -Name $name1 -Value $value1 -PropertyType String | Out-Null
New-ItemProperty -Path $keypath5 -Name $name2 -Value $value2 -PropertyType String | Out-Null
2. Creating a new Settings Catalog
Now, let’s take a look at how to configure the Point and Print restrictions in Intune by creating a new Setting Catalog
You can check out if the values were updated on the client itself by running
Get-ItemProperty -Path ‘HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint\’
3. Preinstalling the Printers and Drivers on the devices
When looking at the Printer Nightmare CVE, you could also choose to install the printers and the corresponding drivers on the device itself. In this blog below, I am giving you 2 options. One with the PnPutil.exe and one with Printbrm.exe. If you are interested, please read it.
https://call4cloud.nl/2021/07/what-about-printer-drivers
6. Printer NightMare Update KB5005565
And again….. after a new update fixing the Printer Nightmare bugs…. something broke. There is a possibility you will receive the error 0x0000011b when you try to install the printer. I guess when making use of Kerberos you should have no problems but it still needs some explanation.
With this update, Microsoft changed the 1 setting which they warned about in the KB4599464: RpcAuthnLevelPrivacyEnabled
When the CVE-2021-1678 first arrived, Microsoft issued an update to fix this problem “A security bypass vulnerability exists in the way the Printer Remote Procedure Call (RPC) binding handles authentication for the remote Winspool interface”
So they added this key to give you the ability to turn it on yourself: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\RpcAuthnLevelPrivacyEnabled with the value of zero. As stated they were going to enforce it in September 2021… Guess what happened with the latest September Update… They enforced it by changing the value to 1.
Luckily when you are encountering (yet again) printing issues, you could change this value back to 0 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\RpcAuthnLevelPrivacyEnabled. Of course, we need to perform this action on the Print Server itself!
It’s way better than removing the whole KB… because it also fixes some stuff apparently 🙂 and it will add a lot of new possibilities to use new ADMX_ Settings with Intune
UPDATE 21-09-2021
If you still have Windows 2012 r2 Printers servers running and the solution above isn’t working for you, try to create the next DWORD: CopyFiles and change the value to 1
RegKey Location: HKEY_LOCAL_MACHINE\SOFTWARE\POLICIES\WINDOWS NT\PRINTERS\
Because the latest Printer Nightmare Update also changed the CopyFiles directive print driver feature, with the update applied the CopyFiles feature is disabled by default.
7. Printer NightMare Update KB5006670
I could say… and again… but this is somehow three in a row :). With the KB5006670 update installed you could end up with a nice new error: 0x00000709.
But this time solving the error is a little bit more difficult as changing the RpcAuthnLevelPrivacyEnabled isn’t working anymore. But what’s left as uninstalling the update should be your last resort.
Luckily you have got 2 options left.
- You could copy the win32spl.dll from a still-working device to the not so working device. But beware of the permissions on that file!
- The CopyFiles method I described in part 6
8. Printers with the V4 Framework
Now that I have shown you all your options, I still need to tell you more about the Printer Nightmare Fix I described above. The registry key RestrictDriverInstallationToAdministrators (DWORD 0) is only needed when you are using older drivers.
When using the V4 Framework drivers, it isn’t necessary to deploy this registry key because of the updated printer-sharing mechanism. This is referred to as enhanced Point and Print, and it allows print clients to print to v4 shares without downloading the manufacturer-provided device driver from the print server.
Option 1:
- If you have Printers that DO support V4 Drivers
- Change the RestrictDriverInstallationToAdministrators to 1
- Change your printer Drivers to V4
-Don’t forget to configure the point and print restrictions… it’s always a good thing to have them
Option 2:
- If you have printers that DON’T support V4 Drivers
- Change the RestrictDriverInstallationToAdministrators to 0 or pre install the drivers
- Make sure you configure the point and print restrictions to only allow installing printers from specific servers
9. Some Tips !
Tip 1. But I do need to point out the fact if a server doesn’t need the printer spooler service….. DISABLE IT! and this definitely goes for your domain controllers! Please make sure you configure a GPO and push this to all of your servers which doesn’t need to have the Printer Spooler Running
Tip 2. If you don’t want to Disable it, please make sure you configure the “allow Print Spooler to accept client connections” to disabled
10. Background Information about Point and Print
Have you ever considered the difference between Package Point and Print and Point and Print?
I guess it needs some explaining on its own, so let’s go.
When using Point and Print, users can connect to the remote printer and download the drivers from the printer server by using the system account (I guess that’s why it is a little bit vulnerable)
The main difference when using or configuring the Package point and print settings instead of the regular Point and print settings is that the Print server you are using is using package-aware drivers. Again, I need to explain what package-aware drivers are.
Package aware drivers ensure that all of the package’s driver’s components are configured for Point and Print operation. You can check it out by opening the registry and taking a look at the PrinterDriverAttributes (it is also an unsupported method to make your Driver package aware)
The printer Package contains a catalog file (.CAT) that provides authentication when it’s copied to the client.
Conclusion:
As I said before, you need to implement adminless! Almost none of your users need local admin permissions. Allowing users to install their own printers will create a small security breach in your fence but with Point and Print restrictions applied you could limit the Printer Nightmare Impact. Allowing it in this way you could minimize the risks while greatly improving user freedom within their device.
If you want boys to respect you, show them you’re serious, Install Drivers, Print Something.
You have got 3 options to implement this: A PowerShell script or the new nice setting catalog!
Вы можете использовать групповые политики (GPO) для установки принтеров на компьютеры пользователей домена Active Directory. В этой статье мы покажем, как автоматически установить принтер пользователю домена при его входе на компьютер.
Рассмотрим следующую конфигурацию: в организации имеется 3 отдела, каждый отдел должен печатать документы на собственном цветном сетевом принтере. Ваша задача настроить автоматическое подключение сетевых принтеров пользователям в зависимости от отдела.
Содержание:
- Подключение принтеров доменным пользователям через GPO
- Разрешить установку принтеров через GPO без прав администратора
Подключение принтеров доменным пользователям через GPO
Создайте три новые группы безопасности в AD (prn_HPColorSales, prn_HPColorIT, prn_HPColorManagers) и добавьте в нее пользователей отделов (наполнение групп пользователей можно автоматизировать по статье “Динамические группы в AD”). Вы можете создать группы в консоли ADUC, или с помощью командлета New-ADGroup:
New-ADGroup "prnHPColorSales" -path 'OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru' -GroupScope Global –PassThru
- Запустите консоль редактора доменных политик (GPMC.msc), создайте новую политику prnt_AutoConnect и прилинкуйте ее к Organizational Unit (OU), в котором находятся целевые пользователи;
Если у вас в домене используется небольшое количество сетевых принтеров (до 30-50), вы можете использовать одну GPO для установки всех принтеров. Если у вас сложная структура домена, есть сайты AD, используется делегирование прав администраторам филиалов, лучше создать несколько политик подключения принтеров. Например, по одной GPO для каждого сайта или OU.
- Перейдите в режим редактирования политики и разверните секцию User Configuration -> Preferences -> Control Panel Setting -> Printers. Создайте новый элемент политики с именем Shared Printer;
Если вы хотите подключать принтер по IP адресу (не через принт-сервер, а напрямую), выберите пункт TCP/IP Printer.
- Действие – Update. В поле Shared Path укажите UNC адрес принтера, например,
\\msk-prnt\hpcolorsales
(в моем примере все принтеры подключены к принт-серверу
\\msk-prnt
). Здесь же вы можете указать, нужно ли использовать этот принтер в качестве принтера по-умолчаниюВы можете опубликовать ваши принтеры в Active Directory. Для этого нужно включить опцию List in the Directory в настройках общего сетевого принтера на вкладке Sharing. В этом случае вы можете не указывать имя принетра вручную, а найти его поиском в AD. Просто нажмите кнопку с тремя точками при выборе принтера, нажмите кнопку Find now и выберите имя сетевого принтера из списка.
- Перейдите на вкладку Common и укажите, что принтер нужно подключать в контексте пользователя (опция Run in logged-on user’s security context). Затем выберите опцию Item-level targeting и нажмите на кнопку Targeting;
- С помощью нацеливания GPP вам нужно указать, что данная политика подключения принтера применялась только для членов группы prn_HPColorSales. Для этого нажмите New Item -> Security Group -> в качестве имени группы укажите prn_HPColorSales;
Обратите внимание, что данное ограничение не запрещает любому пользователю домена подключить это принтер вручную в проводнике Windows. Чтобы ограничить доступ к принтеру, нужно изменить права доступа к нему на принт-сервере, ограничив возможность печати определенными группам.
- Аналогичным образом создайте политики установки сетевых принтеров для других групп пользователей.
Есть еще старый раздел политик для настройки принтеров — Computer Configuration -> Policies -> Windows Settings -> Deployed Printers, однако этот метод установки принтеров пользователям не такой гибкий, как рассмотренный нами способ с помощью GPP.
При использовании такой групповой политики, новые принтера будут устанавливаться у пользователей, только если на их компьютерах уже установлен соответствующий принтеру драйвер печати (драйвера нужно предварительно установить вручную или интегрировать напрямую в образ Windows).
Если для данного принтера не установлен драйвер, то назначенный через GPO принтер не будет добавлен пользователю. При этом в журнале Event Log -> Application появится событие с Event ID 4096:
Source: Group Policy Printers The user 'HPLaserJet4101' preference item in the 'prnt_AutoConnect {0D83EA70-0077-46A3-882A-C4FEED3DA489}' Group Policy Object did not apply because it failed with error code '0x800702e4 The requested operation requires elevation.' This error was suppressed.
Дело в том, что теперь пользователи Windows без прав администратора не могут установить принтера даже не смотря на настройки политики Point and Print Restriction.
Разрешить установку принтеров через GPO без прав администратора
В 2021 году в сервисе Print Spooler была обнаружена серьезная уязвимость (PrintNightmare CVE-2021-34527), для исправления которой Microsoft изменила поведение Windows при установке драйверов печати. Теперь пользователи без прав администратора не могут установить драйвера для принтера (KB5005033), в том числе с помощью параметра GPO Point and Print. Установку драйверов (подписанных и неподписанных) должны выполнять только пользователи с правами администратора.
Однако есть обходное решение, которое позволит обычным пользователям установить драйвера. Для этого нужно изменить вашу GPO установки принтеров.
- Перейдите в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options и измените значение параметра Devices: Prevent users from installing printer drivers на Enabled;
- Теперь перейдите в Computer Configuration -> Policies -> Administrative Templates -> System -> Driver Installation в параметре Allow non-administrators to install drivers for these device setup classes добавьте классы для устройства типа принтеры
{4658ee7e-f050-11d1-b6bd-00c04fa372a7}
и
{4d36e979-e325-11ce-bfc1-08002be10318}
. Это разрешит установку только драйверов печати; - Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Printers и включите политику Point and Print Restrictions. Здесь нужно указать список ваших принт-серверов (Users can only point and print to these servers), с которых разрешено устанавливать драйверы печати. В двух оставшихся параметрах выберите Don’t show warning or elevation prompt;
- Добавьте список ваших доверенных прнит-серверов в параметр Package Point and print — Approved servers;
- (Теперь самый важный пункт!!). Чтобы разрешить установку драйвера печати без прав админа нужно временно изменить значение параметра реестра RestrictDriverInstallationToAdministrators на 0.
На отдельном компьютере вы можете изменить этот параметр с помощью команды:
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f
Чтобы изменить этот параметр реестра на компьютере через GPO, нужно создать правило GPP в разделе Computer (Configuration -> Preferences -> Windows Settings -> Registry. Создайте параметр реестра с настройками:
Action: Replace Hive : HKEY_LOCAL_MACHINE Key path: Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint Value name : RestrictDriverInstallationToAdministrators Type: REG_DWORD Value: 0
В новых шаблонах административных ADMX файлов из Microsoft Security Baseline для этого параметра реестра добавлен отдельная опция GPO. Называется она Limits printer driver installation to Administrators (находится в разделе Computer Configuration -> Administrative Templates -> Printers).
Перейдите на вкладку Common и включите опцию Remove this item when it is no longer applied.
Теперь обновите настройки GPO на клиентах (перелогиньтесь или выполните
gpupdate /force
) и проверьте, что драйвера с принт-серверов теперь устанавливаются автоматически. В журнале Application должны появится события MsiInstaller вида:
EventID 1040 Beginning a Windows Installer transaction: C:\Windows\system32\spool\DRIVERS\x64\3\CIOUM64.MSI. Client Process Id: 7240.
Такая GPO позволит любому пользователю без прав администратора установить сетевые принтера из указанных серверов печати без запроса на повышения прав и уведомлений.
Обратите внимание, что таким образом можно установить только подписанные драйвера принтеров (Package-aware v3 print drivers). Для таких драйверов в консоли Printer Management (printmanagement.msc) в разделе Drivers должно быть указано Packaged=True. Подробнее об этом здесь https://winitpro.ru/index.php/2016/08/31/update-kb3170455-network-shared-printer-error/
Если вы попытаетесь установить через GPO принтер с неподписанным драйвером, он не будет установлен не смотря на параметр RestrictDriverInstallationToAdministrators:
The user 'BrotherDCP2540' preference item in the 'prnt_AutoConnect {GUID}' 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.
Элемент предпочтения пользователь "BrotherDCP2540" в объекте групповой политики "Подключение принтеров {GUID}" не применен по причине ошибки с кодом '0x80070bcb Указанный драйвер принтера не найден в системе. Необходимо скачать драйвер.' Эта ошибка была отключена.
Раньше для установки и подключения принтеров пользователям мне приходилось использовать VBS /PowerShell скрипты, которые запускались как Startup скрипты GPO и возможности фильтрации групповых политик. Однако использовать Group Policy Preferences для установки принтеров пользователям намного проще.
Описание проблемы
Данная ошибка может проявлять себя сообщениями: «Windows не удаётся подключиться к принтеру», «Установленная на данном компьютере политика не позволяет подключение к данной очереди печати. Обратитесь к системному администратору» с кодами ошибок 0x0000011b, 0x00000709, 0x80070035, 0x00000bcb и прочими, при попытке установить сетевой принтер, физически подключенный к другому ПК.
Причины проблемы
Данная проблема связана с изменением Microsoft политики безопасности по отношению к принтерам, подключенным через другие компьютеры.
В первые дни после обновлений (фигурировали обновления KB5005565, KB5005568, KB5006670, KB5006714, KB5007186, KB5007247) помогало удаление этих обновлений и запрет их установки через WUShowHide, однако с выходом одного из последующих обновлений, изменения вносятся перманентно, без возможности их отката при удалении обновления.
1. Решение проблемы
Обратите внимание. Мы будем оперировать двумя терминами: «компьютер-сервер» («сервер») и «компьютер-клиент» («клиент»).
Компьютер-сервер – это компьютер, к которому физически подключен принтер по интерфейсу USB и на нём же расшарен в локальную сеть.
Компьютер-клиент – это компьютер, с которого вы пытаетесь подключиться к компьютеру-серверу и далее к принтеру.
1.1. Удаление принтера
Первым делом необходимо удалить принтер на компьютере-клиенте, если это не было сделано ранее.
Для удаления принтера, перейдите в Панель управления – Устройства и принтеры (или «Просмотр устройств и принтеров» при просмотре в режиме Категории). Найдите необходимый принтер, нажмите по нему ПКМ – Удалить устройство.
1.2. Установка всех обновлений системы
Далее следует установить все обновления Windows на оба компьютера.
Для обновления системы перейдите в приложение «Параметры» (Win+I) – Обновление и безопасность – Центр обновления Windows – Проверить наличие обновлений.
Загрузка и установка обновлений может занять продолжительное время, в зависимости от количества обновлений, скорости интернета и производительности ПК.
После установки обновлений, перезагрузите ПК для их установки. После перезагрузки ПК, вновь проверьте наличие обновлений. Повторяйте до того момента, пока в Центре обновления Windows не появится надпись «У вас установлены все последние обновления».
1.3. Включите парольный доступ к принтерам и папкам
На компьютере-сервере перейдите в Панель управления – Центр управления сетями и общим доступом – Дополнительные параметры общего доступа – Все сети, переведите параметр «Общий доступ с парольной защитой» в положение «Включить общий доступ с парольной защитой».
1.4. Создайте пользователя для печати
Для работы печати на других компьютерах необходимо, чтобы на компьютере-сервере существовал пользователь с установленным паролем. Вы можете использовать уже существующую учётную запись, предварительно установив на неё пароль, но мы бы всё же порекомендовали завести для этого отдельную учётную запись.
Нажмите правой кнопкой мыши по кнопке «Пуск» и откройте оснастку «Управление компьютером».
Перейдите в раздел Служебные программы – Локальные пользователи и группы – Пользователи.
В открывшемся разделе со списком пользователей нажмите ПКМ на пустом месте, нажмите «Новый пользователь».
Введите название пользователя и укажите пароль. В нашем примере и имя пользователя, и пароль – print. Установите галочку на «Срок действия пароля не ограничен» и на «Запретить смену пароля пользователем».
Если раздела «Локальные пользователи и группы» нет, то для создания пользователя необходимо воспользоваться командной строкой (Win+R – «cmd» – OK), в которой последовательно ввести следующие команды:
net user print print /add net user print /passwordreq:no net user print /passwordchg:no wmic useraccount where name="print" set passwordexpires=false
Подробнее об управлении пользователями через CMD вы можете прочитать в нашей статье: Создание и управление пользователями Windows через командную строку
1.5. Внесение изменений в реестр
Далее следует внести изменения в реестр Windows (Win+R – «regedit» – OK). Обязательно это сделать на компьютере-сервере (куда физически подключен принтер), и крайне желательно – на компьютере-клиенте.
- Раздел:
HKLM\SYSTEM\CurrentControlSet\Control\Print
Создайте ключRpcAuthnLevelPrivacyEnabled
(DWORD32) с значением0
- Раздел:
HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint
(может понадобиться создать ветку)
Создайте ключRestrictDriverInstallationToAdministrators
(DWORD32) с значением1
Либо через командную строку:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print" /v RpcAuthnLevelPrivacyEnabled /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f
Либо скачайте готовый .reg-файл в архиве и запустите его, разрешив внести изменения в реестр: shared_printer_repair.zip
1.6. Перезагрузите оба компьютера и попробуйте установить принтер
После проделанных манипуляций, перезагрузите оба компьютера и вновь попробуйте установить принтер.
При входе с компьютера-клиента на компьютер-сервер должен запроситься пароль для доступа к сетевым папкам. Используйте имя пользователя и пароль от созданного на компьютере-сервере пользователя. При необходимости сохраните пароль в окне входа, чтобы в будущем не вводить его заново.
2. Если приведённая выше инструкция не помогла
Данный вариант поможет, если вы пытаетесь установить принтер на компьютер с другой разрядностью (например, принтер физически подключен к Windows 7 32-бит (x86), а подключить по сети вы его пытаетесь к Windows 10 64-бит) и возникает ошибка: «Установленная на данном компьютере политика не позволяет подключение к этой очереди печати», хотя при этом изменения в реестр внесены и пользователь с паролем создан.
Проблема может быть в конфликте драйвера. Дело в том, что с обновлёнными политиками безопасности, Windows не может подключить принтер на компьютере-клиенте, если на компьютере-сервере не установлен аналогичный драйвер под разрядность компьютера-клиента.
Для решения этой проблемы на компьютере-клиенте проделайте следующие действия:
- Откройте диалог «Выполнить» (Win+R, либо Пуск – Выполнить, либо ПКМ по Пуску – Выполнить). Введите:
printui /s /t2
и нажмите «ОК» - Выберите драйвер необходимого устройства, нажмите «Удалить», выберите «Удалить драйвер и пакет драйвера», после чего нажмите «ОК»
- Согласитесь на удаление драйвера и нажмите «Удалить».
Если появится ошибка «Указанный драйвер принтера занят» – необходимо в Панели управления – «Устройства и принтеры» удалить все принтеры этой модели (даже подключенные к другим компьютерам или отключенные) и перезапустить службу «Диспетчер печати», например, командами в Командной строке:net stop spooler
net start spooler
После этого заново попробуйте удалить пакет драйверов на данный принтер. Должно появиться окно с надписью «Драйвер ХХХ удален.»:
Далее работаем с компьютером-сервером.
- На компьютер-сервер скачайте драйвер для разрядность ОС компьютера-клиента.
То есть, если на компьютере-сервере ОС 32-бит, а на компьютере-клиенте – 64-бит, скачайте драйвер на 64-битную ОС, но не устанавливайте его, а просто разархивируйте, если установщик в архиве или самораспаковывающемся архиве. - Перейдите в Панель управления – Устройства и принтеры. Откройте свойства необходимого принтера.
- Перейдите на вкладку «Доступ».
- В разделе «Драйверы» нажмите на кнопку «Дополнительные драйверы»
- В открывшемся окне поставьте галочку на драйвер отсутствующей разрядности
- Выберите INF-файл драйвера необходимой разрядности.
- Нажмите «ОК» и дождитесь установки драйвера, после чего, кнопка «ОК» станет неактивна:
- Закройте все окна свойств принтера
После этого на компьютере-клиенте попробуйте установить принтер.
При установке должен появиться вопрос: «Вы доверяете этому принтеру?». Подтвердите нажатием кнопки «Установить драйвер»:
Начнётся копирование драйверов с компьютера-сервера на компьютер-клиент:
После совершения этих действий, принтер должен успешно установиться.
3. Ещё один вариант
У нас этот вариант сработал на принтере для этикеток Citizen. Что самое интересное: все прочие принтеры с этого компьютера устанавливались корректно (при условии, что все шаги выше уже были проделаны), а один, конкретно этот принтер Citizen – хоть и пытался, даже выдавал диалог UAC на установку принтера, но так и не мог установиться с ошибкой 0x00000bcb.
Предположительно, проблема в том, что операционная система не доверяет издателю драйвера устройства.
3.1. Удалите драйвер с клиента
Как это сделать, написано чуть выше, но кратко напомним:
- Удаляем принтер из Панели управления – Устройства и принтеры (даже если принтер отключен)
- Перезапускаем службу «Диспетчер печати» (spooler)
- Удаляем драйвер и пакет драйвера через
printui /s /t2
3.2. Экспортируйте драйвер с сервера
Для этого первым делом необходимо на сервере открыть оснастку «Диспетчер устройств».
После этого найдите нужный принтер в разделе «Принтеры» или «Очереди печати». Нажмите по принтеру правой кнопкой мыши и перейдите в «Свойства».
Далее перейдите на вкладку «Сведения» и выберите в выпадающем списке значение «Файл INF». Запомните или скопируйте это значение, оно понадобится нам в будущем.
Далее запустите командную строку, PowerShell или терминал Windows от имени администратора и выполните две команды, подставив вместо ИМЯ_INF – имя *.inf файла из предыдущего пункта (включая расширение «.inf»):
mkdir %userprofile%\desktop\DrvBackup
pnputil.exe /export-driver ИМЯ_INF %userprofile%\desktop\DrvBackup
Данная команда создаст на рабочем столе текущего пользователя папку DrvBackup и экспортирует драйвер принтера в неё. Перенесите эту папку на компьютер-клиент.
3.3. Установите драйвер на клиенте
Установить драйвер из экспортированного пакета можно двумя способами:
3.3.1. Установка через Диспетчер устройств
- Откройте Диспетчер устройств
- Нажмите на любой из разделов или на любое устройство
- В панели сверху перейдите в Действие – Установить старое устройство
- В окне нажмите «Далее»
- Выберите «Установка оборудования, выбранного из списка вручную» и нажмите «Далее»
- Выберите «Показать все устройства», нажмите «Далее»
- Нажмите «Установить с диска»
- В открывшемся окне нажмите «Обзор» и выберите файл *.inf внутри папки с экспортированным драйвером
- В следующем окне выберите модель принтера (в пакете драйверов их может быть несколько)
- Нажмите «Далее», «Далее» и «Готово»
- Если в процессе установки появится вопрос: «Установить программное обеспечение для данного устройства?», поставьте галочку на «Всегда доверять программному обеспечению Название_издателя» и нажмите «Установить»
3.3.2. Установка драйвера через установку принтера
Этот вариант поможет, если в ходе установки драйвера через Диспетчер устройств появилась ошибка «Элемент не найден».
- Откройте Панель управления
- При просмотре категориями нажмите на «Просмотр устройств и принтеров» в разделе «Оборудование и звук».
При просмотре значками нажмите на «Устройства и принтеры». - Сверху, в строке дополнительных функций, нажмите «Добавление принтера»
- В открывшемся окне нажмите «Необходимый принтер отсутствует в списке»
- В следующем окне выберите «Добавить локальный или сетевой принтер с параметрами, заданными вручную»
- Выберите «Создать новый порт» и выберите тип порта – «Локальный порт» или «Local Port», нажмите «Далее»
- В открывшемся окошке введите любое произвольное имя порта, хотя бы «abc».
- В следующем окне выбора драйвера, нажмите на «Установить с диска»
- Выберите *.inf-файл экспортированного драйвера
- Выберите модель принтера, нажмите «Далее»
- При запросе «Какую версию драйвера вы хотите использовать?» (если такой запрос появится, хотя и не должен, т.к. мы удалили драйвер принтера) – выберите «Заменить текущий драйвер» и нажмите «Далее»
- Введите любое имя принтера, например «abc», нажмите «Далее». Не оставляйте значение как есть, поскольку этот принтер нужно будет впоследствии удалить.
- Если в процессе установки появится вопрос: «Установить программное обеспечение для данного устройства?», поставьте галочку на «Всегда доверять программному обеспечению Название_издателя» и нажмите «Установить»
- Дождитесь установки принтера, выберите «Нет общего доступа к этому принтеру», нажмите «Далее» и «Готово»
3.4. Установка принтера
После установки драйвера, попробуйте подключиться к расшаренному принтеру. После успешной установки драйвера, принтер должен подключиться без ошибок.
Если вы устанавливали драйвер через установку принтера, после штатного подключения к принтеру не забудьте удалить добавленный через локальный порт принтер, чтобы впоследствии он не мешался.