On Sunday, 17 August 2014 at 21:24:24 UTC, Tyler Jensen wrote:
I've coded up a Windows Service that ALMOST works but I'm missing something. I need your help.

Hi,

The service works as expected on my Windows machine, but it shows the symptoms you described on my Windows XP VM. I'm going to assume that the symptoms indicate the same problem for my VM and your system.

The reason for the 1053 error is that the service hangs before it can contact the service manager. It is terminated after 5 seconds.

If you use Process Explorer (freeware) or Process Hacker (open-source) to peek at the service process's stack trace, you'll notice that it shows a message box. The message box is not visible to the desktop user, because it is being displayed on the hidden service window station.

When the D runtime encounters an unhandled exception, it will print the exception stack trace to standard error stream, if it is valid. However, services have no standard output or error stream, so the runtime shows a MessageBox instead. (Incidentally, I implemented that behavior.) Thus, the service hangs because of an unhandled exception.

The exception is:

std.exception.ErrnoException@std\stdio.d(367): Cannot open file `c:\temp\inc.log' in mode `a' (Permission denied)

This occurs when the service process attempts to add a line to the log file. However, as the log is owned by the desktop user (because it was created by a process started as the desktop user), and the service process runs under as the "NT AUTHORITY\NETWORK SERVICE" user, the service process cannot write to the same log file as the process starting the service.

Reply via email to