Windows services don't get the same environment as the user who the service is running as would get if they logged in.
in reply to Win32 Daemon @INC
For example, the per-user environment variables aren't set. I assume the same is true of drive mappings for that user.
You might have luck executing a "NET USE" from your script prior to accessing the drive letter, but that's really no different from using the UNC path directly.
There may be an invocation which allows services to see this sort of setting - perhaps someone else could chime in if so.