您的位置:首页 > 编程语言 > C#

访问WMI的相关公用方法总结 -C#

2010-03-08 16:58 501 查看
访问WMI的相关公用方法总结 -C#

private static ManagementScope Connect(string namespaceString)
{
ConnectionOptions options = new ConnectionOptions();
ManagementScope scope = new ManagementScope(namespaceString, options);
scope.Connect();

return scope;
}

private static ManagementObject GetInstanceByName(string namespaceString, string className, string name)
{
ManagementScope scope = Connect(namespaceString);
ObjectQuery query = new ObjectQuery("SELECT * FROM " + className + " WHERE Name = '" + name + "'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection results = searcher.Get();
foreach (ManagementObject manObject in results)
return manObject;

return null;
}

private static ManagementClass GetStaticByName(string namespaceString, string className)
{
ManagementScope scope = Connect(namespaceString);
ObjectGetOptions getOptions = new ObjectGetOptions();
ManagementPath path = new ManagementPath(className);
ManagementClass manClass = new ManagementClass(scope, path, getOptions);
return manClass;
}

public static ManagementObjectCollection GetInstanceByQuery(string namespaceString, string queryString)
{
ManagementScope scope = Connect(namespaceString);
ObjectQuery query = new ObjectQuery(queryString);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
return searcher.Get();
}

public static int InvokeInstanceMethod(string namespaceString, string className, string name, string methodName)
{
return InvokeInstanceMethod(namespaceString, className, name, methodName, null);
}

public static int InvokeInstanceMethod(string namespaceString, string className, string name, string methodName, object[] parameters)
{
ManagementObject manObject = GetInstanceByName(namespaceString, className, name);
object result = manObject.InvokeMethod(methodName, parameters);
return Convert.ToInt32(result);
}

public static int InvokeStaticMethod(string namespaceString, string className, string methodName)
{
return InvokeStaticMethod(namespaceString, className, methodName, null);
}

public static int InvokeStaticMethod(string namespaceString, string className, string methodName, object[] parameters)
{
ManagementClass manClass = GetStaticByName(namespaceString, className);
object result = manClass.InvokeMethod(methodName, parameters);
return Convert.ToInt32(result);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: