Some users, running Sage 6.5 (2018), cannot run Modulo eImagePac or the Sage 300 Options program Ops Inquiry (eg Item Inquiry), even though a user with administrative privileges can run them without error.

  • In the case of eImagePac, the problem shows as the following error when opening eImagePac File Manager:

You may alternatively get the error

  • In the case of Item Inquiry, the user will see a small box as the program first attempts to load, then nothing more. An error line which reads “<date time>: #1 – Connection to Sage 300 ERP Failed.” is recorded in the file <Sage300ProgramDirectory>\UQ65A\UQ1000.log.

This has been noticed especially on Windows 10 client workstations.  It has been found to affect some users, and not others.  It has sometimes been solved by creating new user profiles.  It has once been seen to start happening when previously there was no error, even though no Windows update seemed to have occurred.

This document describes the nature of the problem, and how to workaround it without having to grant administrator privileges to the affected users.

Nature of the problem – Registry Virtualisation (aka UAC Virtualisation)

The evidence for the nature of the problem was found in the Windows Application Log :

Both programs produced the same entry in the Application Log, which was compelling.

This shows that the 2 programs are seeming to fail to find the \HKLM\Software\Accpac International, Inc. registry key[1], even though it exists, and even though it has already been accessed successfully by the main Sage 300 program (accpac.exe).

A Google of similar problems pointed to Registry Virtualisation as the cause:

For a description of Registry Virtualisation, please see https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-virtualization.

In essence, it would seem that the 2 programs, NZ3001.exe and UQ1000.exe are using deprecated methods to access the registry keys within HKLM\Sofware (probably via Sage 300 library functions).  Consequently, the Windows operating system detects when these programs attempt to open that part of the registry with write permission, and redirect the programs to use corresponding entries under the current user hive HKCU\Classes\VirtualStore\Machine\Software.

You can prove this is happening by opening the Task manager, changing to Details – Processes, and choosing to add the column called “UAC Virtualisation”.  In a scenario where this error is occuring, you will see that the core Accpac programs accpac.exe etc have UAC Virtualisation as “Not Allowed” whereas the programs NZ3001.exe and UQ1000.exe have UAC Virtualisation as “Enabled”.

Normally under Registry Virtualisation this works seamlessly, with the required keys being created and copied from HKLM\Sofware as required.  However, it seems that in this case, probably because the EXEs are being launched from Accpac.exe which has UAC Virtualisation as “Not Allowed”, that the keys are failing to copy.  Therefore, we get the surprising result that the programs fail by not finding the registry keys at all.

Since registry virtualisation is triggered by the UAC level, we can see why it only affects certain non-administrative users.

Workaround

[This is the first workaround that has been discovered.  It is not a great solution, because it requires copying a bunch of registry keys to each affected user’s profile.  Hopefully somebody will discover a better solution, eg by setting both Accpac.exe and the 2 affected programs to run with the same setting of UAC Virtualisation, or by fine tuning the UAC levels of the affected users.]

Solution:

(This solution is for a 64 bit machine.  On a 32 bit machine simply omit the references to Wow6432Node.)

Open the registry, navigate to HKLM\Software\Wow6432Node\Accpac International, Inc.
Export this key to a .reg file. (this export will include all subkeys and values).
Edit that .reg file, replacing evey reference to

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\

with

[HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\WOW6432Node\

.Now log in as the affected user, and import the edited .reg file. (You can just double click on it to invoke the registry import).

 

[1] Note that on a 64 bit computer, the actual location of the above registry key is \HKLM\Software\WOW6432Node\Accpac International, Inc., due to Registry Redirection and Reflection. – However, as far as the 32 bit programs are concerned, it is seen as being at \HKLM\Software\Accpac International, Inc.This is not the cause of the problem.

 

//