I maintain a 32 bit C++ application that can be run as a user GUI or a windows network service. There is no difference in build, when running as a network service it just doesn't launch the UI.
If the application crashes when running as a GUI, a crash dump is created. However, the same crash running as a service does not create a crash dump.
This is the case for windows 10, server 2012, server 2016.
I have added code to the exception handler so the process can write the dump itself. The registry entry for the dump folder is read successfully and the dump is created in that folder most of the time, but not all. I.e. creating a crash dump in-process seems to be unreliable, which I guess is understandable.
Why would WER not create a dump for an application run as a service?