views:

21

answers:

1

I wrote the following code to change the user account and password associated with a Windows Service. How can I modify this code to be able to perform the same operation on a remote system?

static void Main(string[] args)
        {
            string serviceName = "DummyService";
            string username = ".\\Service_Test2";
            string password = "Password1";

            ServiceController sc = new ServiceController(serviceName);

            Console.WriteLine(sc.Status.ToString());

            if (sc.Status == ServiceControllerStatus.Running)
            {
                sc.Stop();
            }
            Thread.Sleep(2000);
            sc.Refresh();
            Console.WriteLine(sc.Status.ToString());

            string objPath = string.Format("Win32_Service.Name='{0}'", serviceName);
            using (ManagementObject service = new ManagementObject(new ManagementPath(objPath)))
            {
                object[] wmiParams = new object[11];
                wmiParams[6] = username;
                wmiParams[7] = password;
                service.InvokeMethod("Change", wmiParams);
            }

            Thread.Sleep(2000);

            Console.WriteLine(sc.Status.ToString());

            if (sc.Status == ServiceControllerStatus.Stopped)
            {
                sc.Start();
            }
            Thread.Sleep(2000);
            sc.Refresh();
            Console.WriteLine(sc.Status.ToString());

        }
+2  A: 
  1. Use ServiceController constructor overload that allows target machine-name to be specified

  2. Modify WMI object path to include the target server.

        new ManagementPath(
        "\\\\ComputerName\\root" +
        "\\cimv2:Win32_Service.Name='{0}'");
    
  3. Make sure your user/password have sufficient rights on target machine, change those if not.

Steve Townsend
got step 1. Thanks. can you elaborate or give a link for step 2?
xbonez
@xbonez - edit was in progress when you posted this comment... see now
Steve Townsend
thanks. I'll try it out
xbonez
@xbonez - pls let me know if you have problems and I will make changes as needed. Good luck.
Steve Townsend