I'm trying to control Windows Services that are installed in a remote computer. I'm using the ServiceController
class.
I have this:
ServiceController svc = new ServiceController("MyWindowsService", "COMPUTER_NAME");
With this, I can get the status of the Windows Service like this:
string status = svc.Status.ToString();
But I can't control the Windows Service (by doing svc.Start();
or svc.Stop();
).
I get the following exception:
Cannot open Servicexxx service on computer 'COMPUTER_NAME'
That's normal, I suppose there is something to do with access permissions. But how? I've looked into Google but didn't find what I was looking for. However I often read something related to impersonation, but I don't know what that means.
NB: The local and remote computers are both running Win XP Pro.
Problem solved.
Impersonation consists in running a piece of code using a certain logon/password. I found this very useful project: http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print that helped me a lot!