I\'ve got DirectShow based screen capture software. Internally it calls CopyScreenToBitmap function to grab screen. Then the picture is compressed by ffdshow. It works fine
As I understand it, a change was made in Vista that moved services onto a separate desktop from the console user. While you have ticked the box that "allows access" to the desktop, I think you still have to pragmatically switch your service to use that desktop.
Here is a blog post with some useful info and examples.
Try this in addition to allowing access to the desktop:
Then get the DC of the desktop using one of a few methods, including
CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)
Good luck
Have you tested that the desktop application succeeds on the same computers it fails as a service?