gpt4 book ai didi

c# - WMI MangementObject.InvokeMethod()

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:11 25 4
gpt4 key购买 nike

我正在尝试调试一段代码,该代码更新用于 Windows 服务的凭据,该服务未运行。它不会抛出异常,它只是没有通过检查以表明它已被应用。

MSDN对构造函数的描述如下:

public Object InvokeMethod(
string methodName,
Object[] args
)

我不明白的是它在哪里查找您传入的 methodName 字符串。我的假设是它会在我尝试更新的服务的代码中查找。但是,代码尝试更新的服务中不存在 Change 方法。

This CodeProject tutorial似乎也表明 methodName 有一个有效参数列表,因为它使用了源代码中不存在的“创建”和“删除”。

String serviceName = "Scan Data Service";

using (ManagementObject service = new ManagementObject(new ManagementPath("Win32_Service.Name='" + serviceName + "'")))
{
Object[] wmiParams = new Object[11];
if (arguments == null)
{
wmiParams[6] = "LocalSystem";
wmiParams[7] = "";
}
else
{
wmiParams[6] = arguments[0]; //Username
wmiParams[7] = arguments[1]; //Password
}
service.InvokeMethod("Change", wmiParams);
}
SelectQuery query = new SelectQuery("select startname from Win32_Service where name = '" + serviceName + "'");

bool updated = false;

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
foreach (ManagementObject service in searcher.Get())
{
String startName = service["startname"].ToString();

if ((String.Compare(startName, "LocalSystem", true) == 0 && arguments == null) ||
(arguments != null && String.Compare(startName, arguments[0], true) == 0))
{
updated = true;
}
}
}

InvokeMethod() 是否有对所有服务有效的方法名称参数列表?或者是否应该在我的服务代码中实现一些必须以某种方式读取或反射(reflect)的东西?

最佳答案

已解决。

这取决于您使用 WMI 做什么,因为我使用的服务使用了 Win32_Service Class它所针对的方法名称属于此。

当然还有更多Win32 Classes您可以将来自的方法用于不同的任务。

关于c# - WMI MangementObject.InvokeMethod(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com