我使用以下代码更改Windows服务的凭据。在我显示成功更改凭据的消息之前,我想确认已应用新凭据。我怎么能这样做?
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);
//check if new credentials in order
//Console.WriteLine("Service credentials changed");
}
答案 0 :(得分:3)
在重新启动服务之前,新凭据将不适用,我建议您使用ServiceController而不是WMI。
答案 1 :(得分:1)
您应该能够从InvokeMethod
检查返回的对象,并且只需处理错误而不会有任何进一步的复杂性。唯一的问题是找出返回值意味着成功的东西。
object result = service.InvokeMethod("Change", wmiParams);
// if result 'is bad', handle error