Error: “Can’t load SMART Utilities library (code 5) Access is denied” when printing to a Samsung Colour Laser Printer CLP-300N

System Requirements:

  • Windows 2000 Professional
  • Windows XP Home, Professional
  • Windows Server 2003
  • Windows Vista

The Problem:

When a user who is not a local/domain administrator prints to your print server you may receive the following error message on the local console account of the Print Server (Windows Server 2003).

SMART UI 32-bits Gateway error
Can’t load SMART Utilities library (code 5)
Access is denied.

SMART code 5 error message

Depending upon your situation, you may receive this error when:

  • Any user attempts to send any print job to the printer via the share
  • When a user attempts to print from Microsoft Internet Explorer and not from other applications

The error occurs using driver 1.63.11 on 2000/XP/2003 and 3.03 under Windows Vista when communicated with a printer server rather than the printer NIC directly.

If you are serving the share from 2000 or XP you shouldn’t see this issue.

More Information:

So you get a new laser printer, and the last thing that you expect is that every time someone tries to print you wind up with a support call to unblock the print queue! Yet this is exactly what Samsung seem to expect you to do.

I didn’t fiddle around when I heard about this, I checked the drivers were up to date and just logged a support call with Samsung who called back – be it 5 hours later than promised…

The support call in summary:

  1. Calls, registers
  2. Explanation of problem that printer needs unblocking every time someone sends a print job
  3. Gets put on call back queue
  4. Call back does happen, but 5 hours later than originally told
  5. Looks on expert system
  6. Expert system draws a blank
  7. Me: “Can I speak to a higher level 1 support agent?”
    Samsung: “No”
  8. Me: “Can I speak to a developer and fault report it?”
    Samsung: “No”
  9. Me: “Can you tell me when the next driver revision is due to be released?”
    Samsung: “No”
  10. Me: “Is there a new driver revision in the pipe-line?”
    Samsung: “I don’t know”
    Me: “Can you find out?”
    Samsung: “No”
  11. Me: “What are you going to do about it?”
    Samsung: “There is nothing that I can do?”
  12. The samsung guy now Google’s the problem and find exactly the same support material that I had already gone through to no avail from a user community web site Samsung guy starts reading it to me, and just to be annoying I interrupted him mid way through and continued to read the same paragraph to him from the same web page ending
    Me: “Yes I can Google too, this doesn’t work”
  13. Samsung guy now tells me to do one of the suggestions on the comments to the Google search result:
    Samsung: “If you format the server that will fix it”
    Me: “Are you out of your mind! I’m not formatting a domain controller to fix a printer problem, especially when the thing was only installed 2 months ago and there is no evidence that it would even fix the problem” (This article exists because it will not fix the problem)
    Samsung: “That is all I can suggest”
  14. Samsung guy now tells me that because there is something on Google he is sure that a developer must be aware of it and will be working on it
  15. Exasperated by this point
    Me: “OK, how about a past driver revision, perhaps if we go back to an older v1 it will sort itself out?”
    Samsung: “No, I can’t do that, I don’t have access to drivers, we can’t give them to you”
    Me: “Can you put me through to someone who can”
    Samsung: “No, there isn’t anyone”
    Me: “Can you escalate this request?”
    Samsung: “No”
  16. Me: “Can you escalate this request with a developer, supervisor or manager?”
    Samsung: “No”
  17. Me: “What do you expect us to do?”
    Samsung: “I don’t know”
  18. I summarised the situation to the monosyllabic individual on the other end of the phone
    Me: “So what you are saying is that as an organisation you find the fact that you’ve just sold us a brand new network laser printer that cannot accept a print job unless an administrator physically logs into the system console and clicks OK to an error message for each and every print job from a non-administrative user? The only advice you are willing to give me is to format an in-use domain controller to fix a printer driver problem and you find this an acceptable solution and are not willing to do anything about it?”
    … and this was the best bit:
    Samsung: “Yes”
  19. I have to say that at that point I pretty much put the phone down with a few monosyllabic intonations of my own, only realising as I did it that I didn’t tell them that they would be removed from the buying list for this.

 

The Moral of the Story

Don’t buy Samsung Printers and certainly don’t bother with their technical support in the UK.

I sincerely hope that someone in Samsung UK does read this page and does take on board the above, because quite frankly there are some serious issues in their support department.

… and yes, Samsung are no longer on any of my or my clients purchase lists.

The Fix

A couple of months went by between the support call and me actually getting around to looking at it properly – a couple of very, very aggravating months by all accounts.

In a nut shell and after some forensic analysis and some perplexing:

When your user sends off a print job to the print server, it trips off a user-level instance inside the spoolsv.exe, which determines ultimately the permissions that the user is going to have for their print job, sets up the print environment and negotiates with the driver to receive validated queue objects.

For some CONVLUTED reason, the Samsung driver is telling the spoolsv.exe process that it needs to make use of NTVDM.exe under the credentials of the user who transmitted the print job.

If you do not know, NTVDM is the NT Virtual Desktop Manager, it is the process wrapper service used to execute 16-bit (yes 16-bit) code under the 32-bit environment of Win32 (in this case).

One question: Why?
This is a printer designed exclusively for use against NT 5.0 and above (Windows 2000+), so why in blazes does it need access to a 16-bit host process to print something?!?!

This is where your having Windows Server 2003 comes into play, because there are security model changes between 2000, XP and 2003 that have caused this problem.

Windows 2000

Under Windows 2000 the default permissions for NTVDM.exe are…

  • Administrators (F)
  • Everyone (R & E)
  • Power Users (R & E)
  • SYSTEM (F)
  • Users (R & E)

Windows XP

Similarly under Windows XP…

  • Administrators (F)
  • Power Users (R & E) [Professional Only]
  • System (F)
  • Users (R & E)

Windows Server 2003

Lastly under Windows Server 2003…

  • Administrators (F)
  • Batch (R & E)
  • Interactive (R & E)
  • Service (R & E)
  • System (F)

The solution should now be self-explanatory, the user/domain user account has no access to NTVDM.exe under Windows Server 2003 by default, therefore you simply need to give the user groups Read & Execute access to the NTVDM.exe on the Widows 2003 Server that you are sharing the printer from and it will solve the access denied problem that plagues this particular driver.

This isn’t a particularly great solution as it means modifying default Microsoft file permissions, however, it will make the printer work without you having to live in front of a console session between 9am and 5pm.

… it just doesn’t explain why it needs access to NTVDM in the first place.

Error: The Service Pack cannot be integrated into a destination that also has integrated Software Updates

System Requirements:

  • Windows 2000
  • Windows XP
  • Windows Server 2003

The Problem:

When you attempt to slipstream a service pack into your Windows installation media you receive the following error message:

The Service Pack cannot be integrated into a destination that also has integrated Software Updates.
Consult the Service Pack documentation for more details about supported integration scenarios.

Integration Error

The slipstream integration process subsequently terminates without making changes to your deployment share.

 

More Information:

The redistributable media that you are using has been slipstreamed using QFE updates (not just Service Pack updates but regular patches as well). The Windows Service Pack integrator is unable to adapt to having updates in the install process which would clearly conflict with the new Service Pack version itself (for example you could not apply a RTM or SP1 update to an SP2 install).

To fix the problem, ideally you should attempt to locate a clean installation medium, however if all you have is the QFE integrated disc – such as the ones that Dell ship with many of their own systems.- the following steps will get you around the error.

  1. Open your Deployment share
  2. Open the i386 folder
  3. Delete the directory called:
    SVCPACK
  4. Locate and open the .inf file called:
    SVCPACK.INF
  5. For every .exe referenced in the [SetupHotfixesToRun] section, perform a file search of the i386 directory for the file name (minus the .exe) e.g. Q306676.EXE search for Q306676
  6. Delete any files that come back as a result of the search
  7. Close SVCPACK.INF
  8. Delete SVCPACK.INF

You will now be able to slipstream integrate the Service Pack update.

ADODB.Connection error ‘800a0e7a’ – Provider cannot be found. It may not be properly installed

System Requirements:

  • Windows NT 4.0
  • Windows 2000
  • Windows XP (x86)
  • Windows Server 2003 (x86)
  • Windows Server 2008 (x86)
  • Windows 7 (x86)
  • Windows Server 2003 (x64)
  • Windows Vista (x64)
  • Windows 7 (x64)
  • Windows Server 2008 (x64)
  • Windows Server 2008 R2 (x64)
  • Windows Server 2012 (x64)

The Problem:

When you attempt to connect to a Microsoft Access database using the ODBC provider Microsoft.Jet.OLEDB.4.0 you receive the error message:

ADODB.Connection error ‘800a0e7a’
Provider cannot be found. It may not be properly installed./path/file.asp, line ##

 

More Information:

For x64 Systems:

The Microsoft.Jet.OLEDB.4.0 is only available as a 32-bit (x86) module. In order to use it via IIS you must change the web site to run in a 32-bit application pool.

Under IIS 7.0, 7.5 or 8.0:

  • Assuming that you will not want to use ASP .net, in the IIS console in the Application Pools section, create a no managed code, integrated application pool. If you do want to maintain access to ASP .net, select the framework version you require.
  • Once created, in its advanced settings set “Enable 32-bit Applications” to true
  • In the Basic Settings… for the web site entry you are experiencing the error on, change the Application Pool to the newly created 32-bit pool.
  • Restart the web site

In most cases where the system is running under an x64 architecture, this should fix the problem.

For x86 and x64 Systems:

We had a server down for an entire day because of this one. It was either an attempt to fix a security database fault, or an update from Microsoft Update delivered in the April 2008 patch cycle, but after the reboot for the patches, none of the JET (Access) databases on the particular server, in any IIS web would operate.

I will simply cut to the fix for you in the beginning, to expedite your likely finding of a resolution to this problem. Something had caused the service provider for the Microsoft.Jet.OLEDB.4.0 provider to become unregistered. To fix the problem issue the following command from a Command Prompt or Run:

regsvr32.exe msjetoledb40.dll

You shouldn’t need to reboot to solve the problem, it didn’t in my case. However, if nothing happens do restart before progressing to the next step.

 

Additional Steps: Step 1

Reregister the components from MDAC, JET and ADO in their entirety. Simply copy the below into a BAT file and run it.

:: ADODB.Connection error '800a0e7a'

:: Provider cannot be found. It may not be properly installed.regsvr32.exe cfgmgr32.dll -s

regsvr32.exe cliconfg.dll -s

regsvr32.exe dasetupr.dll -s

regsvr32.exe dbmsgnet.dll -s

regsvr32.exe dbmsrpcn.dll -s

regsvr32.exe dbnetlib.dll -s

regsvr32.exe dbnmpntw.dll -s

regsvr32.exe expsrv.dll -s

regsvr32.exe msadce.dll -s

regsvr32.exe msadcer.dll -s

regsvr32.exe msadcf.dll -s

regsvr32.exe msadcfr.dll -s

regsvr32.exe msadco.dll -s

regsvr32.exe msadcor.dll -s

regsvr32.exe msadcs.dll -s

regsvr32.exe msadds.dll -s

regsvr32.exe msaddsr.dll -s

regsvr32.exe msader15.dll -s

regsvr32.exe msado15.dll -s

regsvr32.exe msadomd.dll -s

regsvr32.exe msador15.dll -s

regsvr32.exe msADOX.dll -s

regsvr32.exe msadrh15.dll -s

regsvr32.exe mscpxl32.dll -s

regsvr32.exe msdadc.dll -s

regsvr32.exe msdadiag.dll -s

regsvr32.exe msdaenum.dll -s

regsvr32.exe msdaer.dll -s

regsvr32.exe msdaora.dll -s

regsvr32.exe msdaorar.dll -s

regsvr32.exe MSDAOSP.dll -s

regsvr32.exe msdaprsr.dll -s

regsvr32.exe msdaprst.dll -s

regsvr32.exe msdaps.dll -s

regsvr32.exe msdarem.dll -s

regsvr32.exe msdaremr.dll -s

regsvr32.exe msdart.dll -s

regsvr32.exe msdasc.dll -s

regsvr32.exe msdasql.dll -s

regsvr32.exe msdasqlr.dll -s

regsvr32.exe msdatl3.dll -s

regsvr32.exe msdatt.dll -s

regsvr32.exe msdaurl.dll -s

regsvr32.exe msdfmap.dll -s

regsvr32.exe msjro.dll -s

regsvr32.exe msjtes40.dll -s

regsvr32.exe msorc32r.dll -s

regsvr32.exe msorcl32.dll -s

regsvr32.exe msvcirt.dll -s

regsvr32.exe msvcrt.dll -s

regsvr32.exe mswdat10.dll -s

regsvr32.exe mswstr10.dll -s

regsvr32.exe msxactps.dll -s

regsvr32.exe msxml3.dll -s

regsvr32.exe msxml3a.dll -s

regsvr32.exe msxml3r.dll -s

regsvr32.exe mtxdm.dll -s

regsvr32.exe mtxoci.dll -s

regsvr32.exe odbc16gt.dll -s

regsvr32.exe ODBC32.dll -s

regsvr32.exe ODBC32GT.dll -s

regsvr32.exe odbcbcp.dll -s

regsvr32.exe odbcconf.dll -s

regsvr32.exe ODBCCP32.dll -s

regsvr32.exe ODBCCR32.dll -s

regsvr32.exe ODBCCU32.dll -s

regsvr32.exe ODBCINT.dll -s

regsvr32.exe ODBCTRAC.dll -s

regsvr32.exe oledb32.dll -s

regsvr32.exe oledb32a.dll -s

regsvr32.exe oledb32r.dll -s

regsvr32.exe setupapi.dll -s

regsvr32.exe sqloledb.dll -s

regsvr32.exe sqlsrv32.dll -s

regsvr32.exe sqlunirl.dll -s

regsvr32.exe sqlxmlx.dll -s

regsvr32.exe vbajet32.dll -s:: OLEdB

regsvr32.exe %SystemRoot%\System32\msjetoledb40.dll:: Jet

regsvr32.exe %SystemDrive%\Program Files\Common Files\Microsoft Shared\DAOdao360.dll -s

regsvr32.exe %SystemRoot%\System32\expsrv.dll -s

regsvr32.exe %SystemRoot%\System32\msexch40.dll -s

regsvr32.exe %SystemRoot%\System32\msexcl40.dll -s

regsvr32.exe %SystemRoot%\System32\jet500.dll -s

regsvr32.exe %SystemRoot%\System32\msjet35.dll -s

regsvr32.exe %SystemRoot%\System32\msjet40.dll -s

regsvr32.exe %SystemRoot%\System32\msjetol1.dll -s

regsvr32.exe %SystemRoot%\System32\msjint40.dll -s

regsvr32.exe %SystemRoot%\System32\msjter40.dll -s

regsvr32.exe %SystemRoot%\System32\msjtes40.dll -s

regsvr32.exe %SystemRoot%\System32\msltus40.dll -s

regsvr32.exe %SystemRoot%\System32\mspbde40.dll -s

regsvr32.exe %SystemRoot%\System32\msrd2x40.dll -s

regsvr32.exe %SystemRoot%\System32\msrd3x40.dll -s

regsvr32.exe %SystemRoot%\System32\msrepl40.dll -s

regsvr32.exe %SystemRoot%\System32\mstext40.dll -s

regsvr32.exe %SystemRoot%\System32\mswdat10.dll -s

regsvr32.exe %SystemRoot%\System32\mswstr10.dll -s

regsvr32.exe %SystemRoot%\System32\msxbde40.dll -s

regsvr32.exe %SystemRoot%\System32\spmsg.dll -s

regsvr32.exe %SystemRoot%\System32\vbajet32.dll -s

:: ADO
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msader15.dll -s
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msado15.dll -s
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msadomd.dll -s
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msador15.dll -s
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msadox.dll -s
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msadrh15.dll -s
regsvr32.exe %SystemDrive%\Program Files\Common Files\System\ado\msjro.dll -s

Additional Steps: Step 2

Reinstall MDAC 2.8 SP1 (Windows XP SP1 or below only). You will need to perform some registry modifications before you can reinstall MDAC as it is a protected system module.

  1. Open Regedit
  2. Navigate to:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\ExceptionComponents
  3. Look through each class ID for the following friendly name values. Delete the Class ID containing the matching friendly names:
    Microsoft MDAC Response Files
    Microsoft MDAC Setup Files
    Microsoft SQL Server ODBC Drivers
    Microsoft SQL Server Net Libs
    Microsoft SQL Server OLEDB Provider
    WebData Setup Exception Package
    Mdac 2.8 Exception Package
  4. Download and reinstall MDAC 2.8 SP1 from Microsoft which should reinstall in full.

Cannot unhide systems files under Windows 2000, XP, 2003 or Vista

System Requirements:

  • Windows 2000, XP, 2003, Vista

The Problem:

When attempting to show hidden files in the Windows Folder Options settings window, the bivariate “So not show hidden files and folders” / “Show hidden files and folders” radio buttons do not have a pre-selected value.

Optionless Radio Buttons

No matter which of the options you chose your system will not display hidden files through Windows Explorer, and will not save the “Show hidden files and folders” setting.

More Info:

This is invariably caused by a virus infection or spyware such as (but by no means exclusive to) W32/DKR.worm.

You need to ensure that you have fully disinfected your system using AntiVirus and AntiSpyware software before making the changes to restore the functionality of the Folder Options applet. Otherwise you are frankly wasting your time by troubleshooting the problem.

 

Step 1: Why does it do it?

The virus will have modified the default property value of the registry flag responsible for specifying your preference. While Windows Explorer expects to be able to set a DWORD type for the value, the Virus will have changed the registry type to a Reg_SZ, meaning that the system is unable to read to or write to the value – hence you are unable to save your preference change after you have removed the virus from your system.

Note: If you have not removed the virus from your system then there is good reason to believe that the virus itself is preventing you from making any such that so as to prevent its own demise.

Open regedit and navigate to:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

Incorrect (Left) : Correct (Right)

Delete the REG_SZ named Hidden, you do not need to manually recreate the DWORD. Don’t celebrate yet, follow step 2 BEFORE you succumb to the spleen bursting need that you now have to view your hidden files. Otherwise you will be doing step 1 again.

 

Step 2: Repairing the Explorer Default Flag Associations

The virus really did not want you to view hidden files on the PC, so in addition to preventing you from changing the setting, it also ensured that should you attempt to fix the problem, Explorer would simply break the setting itself – thus ensuring that there is no way that Windows Explorer is going to show you hidden files.

Navigate to:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL

Fix Explorer

Note the presence of the REG_SZ Checked value, this should be a DWORD value. Its job is to tell the Explorer form what to do when someone selects the Show hidden files and folders option, and currently it is being told to write a string value, not a DWORD.

Delete the CheckedValue REG_SZ, create a similarly named DWORD and set its value to equal 1 as shown in the image below.

Fixed Values

You can now view your hidden files and folders.