I remember problems like these with Sentinel dongles (software protection).
The OS seems to take some time to register those dongles so you cannot start the program using it, by putting it in the startup folder.
What you can do, is create a shortcut to a little script.
This script does nothing else than delay, say 1 minute, before it starts the program.
This has shown to work OK for these Sentinel dongles.
I'll show you how this can be done, and hope its a good workaround for you:
Create a file "start.txt", and open it.
Copy and paste all from the code part in this post:
@title Starting OpenCPN....
echo OpenCPN will start in a minute.
echo Please wait..
PING -n 60 127.0.0.1>nul
***put link to OpenCPN here***
Ofcourse put the link to OpenCPN instead of the last line.
Now close and rename this file as "start.cmd" or any other name, as long as it stays a .cmd file.
Put start.cmd in the startup folder.
I have tested this with XP and Win7, so Vista should work just fine.
Let us know if this is OK for you.
You can play with the duration of the delay by changing the value 60 in line 5.