C# を使用して、既存の Windows サービスの資格情報を変更する必要があります。私はこれを行う2つの異なる方法を知っています。
- ChangeServiceConfig、pinvoke.netの ChangeServiceConfig を参照
- Change をメソッド名として使用する ManagementObject.InvokeMethod。
どちらもこれを行うための非常に「友好的な」方法とは思えず、これを行うための別のより良い方法がないかどうか疑問に思っていました。
C# を使用して、既存の Windows サービスの資格情報を変更する必要があります。私はこれを行う2つの異なる方法を知っています。
どちらもこれを行うための非常に「友好的な」方法とは思えず、これを行うための別のより良い方法がないかどうか疑問に思っていました。
以下は、System.Management クラスを使用した手っ取り早い方法の 1 つです。
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 は、私が過去に行った方法です。WMI は少し不安定な場合があり、他に選択肢がない場合、特にリモート コンピューターにアクセスする場合にのみ使用したいと考えています。