Btrieve Error 012 on SYSPASS Password File When Starting Up Elliott
Version: 8.2 & up
Q - I have a single user workstation that displays the error below as soon as they double-click the EL800p icon:
EL800P: Btrieve Error 012 on SYSPASS Password File
If I click on th "Detail" button, then I see the followings:
If I choose to run EL800 instead, then the Elliott Control Center does start up without error. But when I click on any task, I receive a message indicating a launching task error and see CCErrors.log for details. When I go to my <ElliottRoot>\Log\01 folder and find the corresponding CCErrors.log, I see the following entry:
7/28/2020 6:34 PM MIKE at MIKEM
System.ComponentModel.Win32Exception
(0x80004005): The requested operation requires elevation
at
System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at
System.Diagnostics.Process.Start()
at
System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at
El7Net.EL800CC.LaunchTask(Int32 ptr) in G:\NSI.SRC\nw82\EL800CC\EL800CC\EL800CC.vb:line
5201
What can cause this to happen?
A - In the "Detail" button, the Database Activity Snapshot shows that the system tried to open SYSPASS.BTR. But that's not right because it should try to open SYSPASS.BTR with a path like <ElliottRoot>\SYSPASS.BTR, where <ElliottRoot> is your Elliott root directory like "M:\Elliott7." So what is happening is that Elliott is trying to open the SYSPASS.BTR file in the <ElliottRoot>\Bin folder where EL850 or EL850P is run from. Since there's no such file in that folder, so you get Error 012, which means the file is not found.
Why did the system try to open the SYSPASS.BTR file without the proper path? The message in the CCErrors.log "The requested operation requires elevation" gives us a good clue. It is related to UAC (User Access Control) Elevation. This is a feature introduced in Windows 7 where even if the user is an Administrator equivalent, the user does not run the program with the "Administrator" rights. This is to prevent a virus from attacking your machine. Instead, when the Administrator rights are needed, the system will prompt you with the following message:
Do you want to allow this app to make changes to your device?
When you answer "Yes," the application is run as a user "Administrator." The reason you get error 012 on the SYSPASS.BTR file is because the user "Administrator" has not mapped a drive to the <ElliottRoot> network drive. As a result, the program attempts to open the file without a drive letter and path.
If Elliott has been working before and this just started to happen, we can't really explain why it just started to happen now. It seems there are Windows System level changes that are causing the new UAC Elevation behavior. We have a couple suggestions for you to try:
(1) Disable UAC Elevation
In Windows, find the "User Account Control Settings," and change the settings to "Never Notify." See sample screen below:
(2) Map Elliott Network Drive for Administrator
You can change the logon script or profile settings to cause the system to map the network drive for <ElliottRoot>. For example, if <ElliottRoot> is equivalent to "M:\Elliott7," drive M: is mapped to \\Server\Acct. Then make sure the drive M: is mapped for an Administrator. To verify if this is done successfully, you can right click the "CMD" (Command prompt) and choose "Run as administrator." Then, in the Administrator command prompt, see if you can go to the corresponding network drive.
(3) Upgrade to Elliott 8.5 or After
Elliott 8.5 or after by default is run from a local folder so the network drive may not be an issue. But this suggestion is more a speculation than proven resolution. You need to test it out.
(4) Add PSQL Server to Trusted Sites
When you access the PSQL server through a mapped network drive, it may trigger a security check. We are not sure if this is the reason for the trigger of the UAC Elevation. But if it is, then you can add the PSQL server to the "Trusted Sites" to avoid this. See the following KB article:
EMK