June 11, 2009 at 5:07 pm
Hello,
My clients are seeing this error: "Unable to load client print control" when clicking on the print button on SSRS reports.
The server is a Window Server 2003 R2, Service Pack 2, Standard, 64-bit. The database on the server is a SQL Server 2005, SP 2, Standard Edition, 64-bit.
Clients have old versions of the rsclientprint.dll, 2005.90.3042.0. I have learned that this updated file is in a cab file, but the cab file is on the server which is a 64-bit install. Clients are 32-bit. I installed the ReportViewer SP1, but no affect.
To fix this error, should I upgrade to SP3 on the database? I have read that once I install SP3, I need to removed hot fixes. Is this true? Can you advise me on how to fix this problem?
Thanks,
Paul
February 13, 2012 at 4:06 pm
Hi there,
We have had the same issue with Reporting Services 2008 R2 and users that don't have administrative rights to the local PC. In our particular case the users couldn't register the RSClientPrint.dll in order to print. It would respond with the "Unable to load client print control".
After a considerable amount of research and testing we resolved the issue this way:
1. Extracted the contents of RSClientPrint x86 and x64 cab files located in the following directory of the Reporting Services installation C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin (or wherever you have placed it). We placed these files in a user accessible location on the domain.
2. Created a VBScript file that copies the contents of these directories based on the Operating System of the PC in question.
3. Placed this VB Script file in the script repository of Active Directory for access by Group Policy.
4. Created a GPO that references the above VB Script under Computer Configuration > Windows Settings > Startup.
5. Created a second VB Script that registers the RSClientPrint.dll using administrative credentials and placed it in a user accessible location on the domain. This location and files were restricted by ACLs.
6. Created a batch file that references the second VB Script and place it in the Active Directory script repository for access by Group Policy.
7. Adjust the GPO created in step 4 by exposing the batch file under User Configuration > Windows Settings > logon.
This may sound confusing but it works very well.
Essentially you request the user to restart their PC. Once the PC starts it calls the first VB Script and the RSClientPrint files are copied to the local PC depending on the OS found. When the user logs in, the batch file runs, calls the second VB Script which then registers the RSClientPrint.dll using administrative credentials.
If you want any further information on how it works, including the VB Script and batch file code, I can post it here.
Cheers
Scott
April 18, 2012 at 1:48 pm
Hello Scott,
We are also having the same issues with Reporting Services R2, would it be possible for you to post the VB Script and batch file code?
Thanks,
Ren
April 18, 2012 at 3:03 pm
Hi Ren,
Batch file code: Very simplistic. It just calls a VBScript.
START w:\RSClientPrint\regsvr32.vbs
File Copy Script Code: Just copies the extracted RSClientPrint files to the client PC.
Option Explicit
Dim fso
Dim folder
Dim fldrName
Dim os
Dim shell
'setup folder and copy files
fldrName = "C:\RSClientPrint"
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(fldrName)) Then
'Set folder = fso.CreateFolder("C:\RSClientPrintNew")
'fldrName = "C:\RSClientPrintNew"
Wscript.Quit
Else
Set folder = fso.CreateFolder(fldrName)
End If
os = "C:\Program Files (x86)"
If (fso.FolderExists(os)) Then
fso.CopyFile "\\Server\RSClientPrint\x64\*.*", fldrName
Else
fso.CopyFile "\\Server\RSClientPrint\x86\*.*", fldrName
End If
'setup shell environment to execute regsvr32
Set shell = CreateObject("Wscript.Shell")
Set fso = Nothing
Set folder = Nothing
DLL registration script code: Registers DLL on client PC.
Option Explicit
Dim shell
Dim pass
Set shell = CreateObject("Wscript.Shell")
shell.run "runas.exe /user:DOMAIN\username " & """regsvr32 /s C:\RSClientPrint\RSClientPrint.dll""",2,false
Wscript.Sleep(1000)
pass = "password"
shell.sendkeys pass & "{ENTER}"
Wscript.Sleep(1000)
Cheers
Scott
April 19, 2012 at 6:21 am
Thank you, I will test this out soon 🙂
Viewing 5 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply