WEB开发网
开发学院软件开发VC WMI(Windows管理规范)的一个实现 阅读

WMI(Windows管理规范)的一个实现

 2006-07-20 11:39:52 来源:WEB开发网   
核心提示: // 在一个本地或者远程机器上调用Create方法//private void CreateProcess(string stringCommandLine){//设置一个异步回调的句柄ManagementOperationObserver observer = new Managemen
///
/// 在一个本地或者远程机器上调用Create方法
///
///
private void CreateProcess(string stringCommandLine)
{ 
  //设置一个异步回调的句柄
  ManagementOperationObserver observer = new ManagementOperationObserver();
  completionHandler.MyHandler completionHandlerObj = new completionHandler.MyHandler();
  observer.ObjectReady += new ObjectReadyEventHandler(completionHandlerObj.Done);
  string stringMachineName = "";
  //连接到远程计算机
  ConnectionOptions co = new ConnectionOptions();
  if (radioMachine.Checked == true)
  {
    stringMachineName = "localhost";
  }
  else
  {
    stringMachineName = textIP.Text;
  }
  if (stringMachineName.Trim().Length == 0)
  {
    MessageBox.Show("Must enter machine IP address or name.");
    return;
  }
  //获取用户名与密码
  if (textUserID.Text.Trim().Length  > 0)
  {
    co.Username = textUserID.Text;
    co.Password = textPassword.Text;
  }
  //获取指向机器的接入点
  System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" +
      stringMachineName + "\\root\\cimv2", co);   
 
 //获取进程的路径
  ManagementPath path = new ManagementPath( "Win32_Process");
  //获取将要被调用的进程的对象
  ManagementClass processClass = new ManagementClass(ms,path,null);
  //更新状态条
  updateStatus("Create process " + stringCommandLine + ".");
  
  //为方法准备参数
  object[] methodArgs = {stringCommandLine, null, null, 0};
  //执行方法
  processClass.InvokeMethod (observer, "Create", methodArgs);
  //等待,直到invoke调用完成或者超时5秒后
  int intCount = 0;
  while (!completionHandlerObj.IsComplete)
  {
    if (intCount > 10)
    {
      MessageBox.Show("Create process timed out.", "Terminate Process Status");
      break;
    }
     //等待0.5秒
    System.Threading.Thread.Sleep(500);
    
     //增加计数器
    intCount++;
  }
  if (intCount != 10)
  {
    //InvokeMethod尚未超时
    //检查是否出现错误
    if (completionHandlerObj.ReturnObject.Properties["returnValue"].Value.ToString() == "0")
    {
      //刷新进程列表
      this.Refresh();
    }
    else
    {
      MessageBox.Show("Error creating new process.",
        "Create New Process");
    }
  }
  //更新状态条
  updateStatus("Ready");
  this.Update();
}

总结

编写这个演示用的WMI应用程序,增加了我不少的经验。这只展示了WMI很小一部分的功能。我想有了我给出的注释,代码还容易理解吧。

你可以使用WMI完成下列工作:

  • 控制硬件与软件
  • 监控事件
  • 就某个事件运行一个脚本
  • 就某个事件发出一封Email

上一页  3 4 5 6 7 8 

Tags:WMI Windows 管理规范

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接