.net - usuario - ¿Cuál es la mejor manera de cambiar las credenciales de un servicio de Windows utilizando C#
super administrador windows 7 (2)
Aquí hay un método rápido y sucio usando las clases System.Management.
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);
}
}
}
}
Necesito cambiar las credenciales de un servicio de Windows ya existente usando C #. Soy consciente de dos maneras diferentes de hacer esto.
- ChangeServiceConfig, vea ChangeServiceConfig en pinvoke.net
- ManagementObject.InvokeMethod utilizando Change como el nombre del método.
Ninguna de las dos parece ser una forma muy "amistosa" de hacerlo y me preguntaba si me estoy perdiendo otra y mejor manera de hacerlo.
ChangeServiceConfig es la forma en que lo hice en el pasado. WMI puede ser un poco raro y solo quiero usarlo cuando no tengo otra opción, especialmente cuando voy a una computadora remota.