2008-09-24 6 views
6

Je dois modifier les informations d'identification d'un service Windows existant en utilisant C#. Je suis conscient de deux façons différentes de le faire.Quelle est la meilleure façon de modifier les informations d'identification d'un service Windows en utilisant C#

  1. ChangeServiceConfig, voir ChangeServiceConfig on pinvoke.net
  2. ManagementObject.InvokeMethod en utilisant le changement comme nom de la méthode.

Ni l'un ni l'autre ne semble être un moyen très "amical" de le faire et je me demandais s'il me manquait une autre et une meilleure façon de le faire.

Répondre

6

Voici une méthode simple et rapide utilisant les classes 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); 
     } 
    } 
    } 
} 
1

ChangeServiceConfig est la manière dont je l'ai fait par le passé. WMI peut être un peu floconneux et je veux seulement l'utiliser quand je n'ai pas d'autre option, surtout quand je vais sur un ordinateur distant.

Questions connexes