Highly improbable that your Users have a "broken Kernel32.DLL". If
they did - they would be having a lot more issues than just with your
program.
Due to configuration differences and complexities of Windows
platforms, it is entirely possible while invoking an external process
or service to have success in one scenario, yet fail, with or without
error, in another.
As for capturing the error - assuming it is in fact your application
that is throwing the error, and that it is happening past 'startup' or
launch, then simply reengineer your application to not have any
unhandled exceptions, ie provide at least a "top" error handler for
all possible paths. This is seldom as time consuming nor complicated
as it might first appear.
[Tools such as MZ-Tools makes this instrumentation easier.]
Another way to get more accurate information on where an error is
coming from is to enable Dr. Watson - if Users are using Windows XP or
below. Or perhaps getting the Users to install and enable WinDbg if
using Vista or Windows 7/8.
-ralph