Access to client printer device was denied

Citrix.PresentationServer.AccessToClientPrinterDenied.Rule (Rule)

Raises an alert if access to client printer device was denied

Knowledge Base article:

Citrix ® Management Pack

Summary

A client printer failed to be auto-created because the client user did not have the correct permissions to access the server print queue. The client printer will not be available in the session.

 
Causes

Citrix Presentation Server attempts to generate a print queue for each client printer that is auto-created. This error occurs when the server cannot create or access the print queue for an auto-created client printer, due to incorrect client user permissions. The most likely causes for this problem are that:

  • A print queue already exists for the client printer
    - OR -
  • The user does not have the correct permissions for the printer to be auto-created
 
Resolutions

Check if a print queue for the client printer already exists in the Printers Control Panel on the server. Use the client and printer name found in the event description to locate the queue. If a print queue does exist, check that the security settings allow appropriate access for printer management.

If this error occurs only for normal users, not for server administrators, it may be caused by inappropriate permission settings on the following system folders and files:

  • %SystemRoot%\system32\spool
  • %SystemRoot%\system32\printer.inf (if available)

Ensure that users have at least Read, Write, and Execute permissions on these folders and files.

 
External Knowledge Sources

The following sources of information can be helpful when dealing with this error:

Or search the Citrix knowledge base for more information.

 
Sample Event

Client printer auto-creation failed. Access is denied. Client name: (%1) Printer: (%2) printer driver: (%3)

 
© 2002-2008 Citrix Systems, Inc. All rights reserved.

Element properties:

TargetCitrix.PresentationServer.ManagedServer
CategoryAlert
EnabledTrue
Event_ID1105
Event SourceMetaframeEvents
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Access to auto-created printer was denied
Access to auto-created printer was denied for printer {0}. Printer driver: {1}.
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
EventCollectionDS DataSource Microsoft.Windows.EventProvider Citrix.PresentationServer.CitrixAdministratorAccount
GenerateAlert WriteAction System.Health.GenerateAlert Citrix.PresentationServer.CitrixAdministratorAccount

Source Code:

<Rule ID="Citrix.PresentationServer.AccessToClientPrinterDenied.Rule" Enabled="true" Target="Citrix.PresentationServer.ManagedServer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="EventCollectionDS" RunAs="CtxLibrary!Citrix.PresentationServer.CitrixAdministratorAccount" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>1105</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>MetaframeEvents</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" RunAs="CtxLibrary!Citrix.PresentationServer.CitrixAdministratorAccount" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name='Citrix.PresentationServer.AccessToClientPrinterDenied.Rule.AlertMessage']$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/Params/Param[2]$</AlertParameter1>
<AlertParameter2>$Data/Params/Param[3]$</AlertParameter2>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>