I need to change the credentials of an already existing Windows service using C#. I am aware of two different ways of doing this.
Neither seems a very "friendly" way of doing this and I was wondering if I am missing another and better way to do this.
Here is one quick and dirty method using the System.Management classes.
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;
namespace ServiceTest
{
class Program
{
static void Main(string[] args)
{
string theServiceName = "My Windows Service";
string objectPath = string.Format("Win32_Service.Name='{0}'", theServiceName);
using (ManagementObject mngService = new ManagementObject(new ManagementPath(objectPath)))
{
object[] wmiParameters = new object[11];
wmiParameters[6] = @"domain\username";
wmiParameters[7] = "password";
mngService.InvokeMethod("Change", wmiParameters);
}
}
}
}
ChangeServiceConfig is the way that I've done it in the past. WMI can be a bit flaky and I only ever want to use it when I have no other option, especially when going to a remote computer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With