Registry access from a windows service should not use HKCU. Refer to the discussion of HKCU at predefined-keys. Note that it says "This handle should not be used in a service or an application that impersonates different users. Instead, call the RegOpenCurrentUser function.
For more information, see HKEY_CURRENT_USER."
My understanding here is that your service would need to impersonate the user for which the information is desired and then call the RegOpenCurrentUser function so that the thread's token will be used thus avoiding the return of default values.