Hi,
I am using the Paylink on Windows Service but the AESImhei.OpenMHE is returning error number 31 If running on Windows Service. I already tried It using It on Windows Application and Its working. Does anybody know If It's working on Windows Service? I am using VB.NET
PS: The paylink.exe is running, and I already tried changing the logon of my windows service to administrator and I also tried Logon System with enabled Allow service to interact with desktop.
Regards,
Raphael
Can't use Paylink on Windows Service
Moderators: aardvark, davebush, Admin
Re: Can't use Paylink on Windows Service
The DLL used by a Paylink application communicates with the Paylink.exe server using a shared memory segment.
In order to actually locate the segment it has to be named and therefore requires an entry in a Namespace, the server program and the DLL use the name "AESIMHEI mapped file".
All programs run by a single user run in a single session and have access to that session's local Namespace. Windows services or another user all run in different sessions and have different local Namespaces. If the Paylink.exe and the application are running in different sessions, then the application open will fail with error 31.
Windows also provides a Global Namespace, which is accessible by all sessions / processes on a PC, but an entry cannot be made in this unless the process making the entry is running in elevated / admin mode.
The design of Paylink is to use the local Namespace by default to avoid the requirement to run the Paylink.exe driver in elevated / admin mode, but if a user needs the cross session Global Namespace, then they can run the Paylink.exe driver in elevated / admin mode and make an entry in the Standard.cfg file to create the name in the Global Namespace.
To achieve this you should add:
following the "driver" line in Standard.cfg.
Note that the Paylink.exe driver will fail to start if the entry is in the file and the driver program is not in elevated / admin mode.
In order to actually locate the segment it has to be named and therefore requires an entry in a Namespace, the server program and the DLL use the name "AESIMHEI mapped file".
All programs run by a single user run in a single session and have access to that session's local Namespace. Windows services or another user all run in different sessions and have different local Namespaces. If the Paylink.exe and the application are running in different sessions, then the application open will fail with error 31.
Windows also provides a Global Namespace, which is accessible by all sessions / processes on a PC, but an entry cannot be made in this unless the process making the entry is running in elevated / admin mode.
The design of Paylink is to use the local Namespace by default to avoid the requirement to run the Paylink.exe driver in elevated / admin mode, but if a user needs the cross session Global Namespace, then they can run the Paylink.exe driver in elevated / admin mode and make an entry in the Standard.cfg file to create the name in the Global Namespace.
To achieve this you should add:
Code: Select all
use global segmentNote that the Paylink.exe driver will fail to start if the entry is in the file and the driver program is not in elevated / admin mode.
Aardvark software developer. Please put all communication on the problem through the board for the benefit of others.