Services can interact with the command line or the network
I think you mean desktop as opposed to command line.
By default, the service will probably run as LocalSystem - which has the option of accessing the desktop, but can't access the network. If you run it as a domain\workgroup user, it will be able to access the network and it will be able to spawn processes, but they won't be visible to the interactive user.
Finally, I prefer Win32::Daemon to srvany.exe - It's a bit more work, but so much more powerful.
update: No. I don't have shares in Dave Roth!
_________________________________________
Simon Flack ($code or die)
$,=reverse'"ro_';s,$,\$,;s,$,lc ref sub{},e;$,
=~y'_"' ';eval"die";print $_,lc substr$@,0,3;
| [reply] |
A service should not need to access the desktop. It can, BTW, throw up a message box for an error and it will be visible to any desktop that's current. There's a special flag in MessageBox for this.
But the service will normally work behind the scenes. Another program, running as a normal program in the current interactive user's account, can interact with the user and communicate with the service. That's the model MS describes.
| [reply] |
You are probably right, I haven't tried MessageBox in a service.
I am slightly confused about the model you describe. Are you saying that the service should spawn a process in the context of the current logged on user so the user can interact with it? I am not disagreeing with you here, just seeking clarification. It sounds complicated - what happens when the user logs off? Do you kill the process and spawn a new one with the new logged on user?
Personally, I agree that a service shouldn't need access to the desktop. All the services I have written have been completely in the background, and if I've needed to interact with it, I use a client with sockets or something.
But your model sounds a bit confusing. Unless we're talking about the same thing. What do you mean by "Another program, running as a normal program "
Simon Flack ($code or die)
$,=reverse'"ro_';s,$,\$,;s,$,lc ref sub{},e;$,
=~y'_"' ';eval"die";print $_,lc substr$@,0,3;
| [reply] |