The behavior you noticed is the correct one. That is because the regional settings are per user. Meaning that each user can use its own regional settings independent from the rest of the users. After all, it's a matter of preference. That makes sense.
However, most likely, your windows service runs as Local System (or some other service account) which, in turn, has its own settings. Windows makes it easy to change the local system regional settings by providing the option to copy current user settings to the system accounts.

EDIT:
You have to look up the currently logged in user first. See GetCurrentUsername() method in the following class from HERE.
The code was not entirely written by me, I've picked it up myself some time ago and also brought some modifications to it, among which is the GetCurrentUsername() method.
Further on, once you get the username, you get proceed with finding the user's SID, as done in the following question's accepted answer: Convert a username to a SID string in C#/.NET
Once you get that also, it's just a matter of reading the list separator from the registry value sList
unde the following key:
[HKEY_USERS\SID-YOU-JUST-FOUND\Control Panel\International]