A: Most likely your system is impacted by DEP (Data Execution Prevention) if you start Elliott and immediately see the above message.
It is ironic that, after decades of trying to improve how quickly and efficiently CPUs can run code, the newest, most fashionable processor feature is the ability to not run code. A new hardware feature has started to show up to prevent code execution called “execute disable” (XD) by Intel or “no execution” (NX) by AMD. Microsoft calls it Data Execution Protection (DEP) and it is implemented in Windows 2003 Server SP1 and Windows XP SP2.
Basically, the DEP feature uses processor hardware to discourage the kind of virus, worm, and Trojan Horse attacks that look for buffer overrun errors in the operating system. Working with memory protection technology built into new CPUs with this hardware feature, Microsoft toughens the distinction between program and data areas in system memory – in other words, it stops any attempt to insert and execute code from memory locations set aside for data.
Many legitimate programs that perform just-in-time code generation execute instructions within data areas, and they will be effected by this DEP feature. Elliott is in the same situation. Netcellent is committed to rewrite Elliott and come up with a new version in the future to work with DEP. In the meantime, Microsoft offers a new Control Panel dialog box for users to switch the DEP feature on and off for the entire system, or off for individual applications (like Elliott’s EXE).
Error 114 means “Attempt to access item beyond bounds of memory,” which is raised by the Microsoft DEP feature. This type of problem typically happens when you execute Elliott on the server (i.e., Terminal Server/Remote Desktop) because the newer server's CPU most likely comes equipped with DEP checking capability.
To resolve this problem, you need to add all Elliott EXE files to the DEP exception list. You can access that list by going to the Windows right click on "My Computer", "Computer" or "This PC" and choose "Properties". Then choose "Advanced System Settings". Click on "Settings" button under "Performance". Then go to "Data Execution Prevention" tab. See sample screen below:
Depending on your operating system, typically you can access this screen by right clicking "My Computer" or "Computer" and choosing "Properties." Select the "Advanced Tab" and click on the "Settings" button under the "Performance" area. Once you see the "Perform Options" dialog box, click on the "Data Execution Prevention" tab to access the exception list.
One easy way to solve this DEP problem is to select the radio button "Turn on DEP for essential Windows programs and services only." This will cause Windows to exempt all application programs (including Elliott) from the DEP check. You will have to reboot Windows once you make this choice.
If you would like tighter security, then you may want to choose "Turn on DEP for all programs and services except those I select:"
EXE Files for Elliott V7
For Elliott 7.x, you will add all EL700*.EXE in the M:\Elliott7 folder, where M:\Elliott7 is your Elliott start-up folder. More specifically, you will add the following EXE:
- EL700.EXE - Elliott V7 Main EXE
- EL700CF.EXE - Elliott V7 Configuration Utility
- EL700DP.EXE - Elliott V7 Defer Process
- EL700EV.EXE - Elliott V7 Event Processor
- EL700GE.EXE - Elliott V7 Contact Manager
- EL700ME.EXE - Elliott V7 Mass Email & Export Processor
- EL700RP.EXE - Elliott V7 Defer Processing Reporting Task EXE
- EL700TK.EXE - Elliott V7 Tickler
- EL700US.EXE - Elliott V7 User Count Control
For Elliott 8.x, you will add all EL800*.EXE in the M:\Elliott7\Bin folder. More specifically, you will add the following EXE:
- EL800.EXE - Elliott V8 Main EXE
- EL800CF.EXE - Elliott V8 Configuration Utility
- EL800DP.EXE - Elliott V8 Defer Process
- EL800EV.EXE - Elliott V8 Event Processor
- EL800GE.EXE - Elliott V8 Contact Manager
- EL800ME.EXE - Elliott V8 Mass Email and Export Processor
- EL800P.EXE - Elliott V8 Individual Task Processor
- EL800RP.EXE - Elliott V8 Defer Processing Reporting Task EXE
- EL800TK.EXE - Elliott V8 Ticker
- EL800US.EXE - Elliott V8 User Count Control
Use Mapped Drive Path
Keep in mind that when you add Elliott EXE to this list, it is extremely important to match the path, even though the path is not displayed. For example, if you run Elliott on the server from mapped drive M:\Elliott7, then you should add to the DEP exception list through the same mapped drive location. Even though it's located on the server, a local drive like D:\Acct\Elliott7 or a UNC path may refer to the same location and EXE. You should not use that alternative path. In a sense, it's misleading that Microsoft's DEP does not display the path in the exception list. Matching the path with the executing EXE exactly is very important to address your DEP problem.
What If You Can't Use Mapped Drive Path
In some exception situations, we have noticed Windows DEP user interface do not allow users to select the EL700*.EXE file from mapped drive. To by pass this limitation, please read the following knowledgebase article: http://support.elliott.com/knowledgebase/articles/531028-manage-data-execution-prevention-dep-through-reg
If You Are Running on Windows Server 2016
If you run Elliott directly on Windows Server 2016, above method won't work due to DEP exception list does not support mapped network drive. This is the case even if you try to define the exception list of mapped network drive path through registry. Therefore, in the case of Windows Server 2016, you will need to choose "Turn on DEP for essential Windows programs and services only". This change will require rebooting the server before the configuration can take effect.