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.
In order to solve the issue , give your name the admin permissions on remote computer/server like domain/username and you will able to run the package successfully since i had the same issue and when i gave permissions to my self services were accessible on remote server
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!
Starting and stopping services is a highly privileged operation, normally available only to administrators. Ensure that the user account you use has sufficient privileges on the target machine. Ask more questions about it at serverfault.com