• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#与WMI使用技巧集第1/2页

c#与WMI使用技巧集第1/2页

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#wmi,wmi,wmi服务,wmi provider host,wmi效能适配器是什么等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
1、 什么是WMI 
WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。 
2、 如何用WMI获得本地磁盘的信息? 
首先要在VS.NET中创建一个项目,然后在添加引用中引用一个.net的装配件:System.Management.dll,这样你的项目才能使用WMI。代码如下: 
using System; 
using System.Management; 


class Sample_ManagementObject 
{ 
 public static int Main(string[] args)  
 { 
  SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk"); 
  ManagementObjectSearcher searcher=new ManagementObjectSearcher(query); 
  foreach(ManagementBaseObject disk in searcher.Get()) 
  { 
   Console.WriteLine("\r\n"+disk["Name"] +" "+disk["DriveType"] + " " + disk["VolumeName"]); 
  } 


  Console.ReadLine(); 

  return 0;

 }

}

disk["DriveType"] 的返回值意义如下:

1 No type  
2 Floppy disk  
3 Hard disk  
4 Removable drive or network drive  
5 CD-ROM  
6 RAM disk 


3、如何用WMI获得指定磁盘的容量? 
using System; 
using System.Management; 

// This example demonstrates reading a property of a ManagementObject. 
class Sample_ManagementObject 
{ 
 public static int Main(string[] args)  
 { 
  ManagementObject disk = new ManagementObject( 
   "win32_logicaldisk.deviceid=\"c:\""); 
  disk.Get(); 
  Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes"); 
  Console.ReadLine();  
  return 0; 
 } 
} 


4、 如何列出机器中所有的共享资源? 
using System; 
using System.Management; 

class TestApp { 
 [STAThread] 
 static void Main() 
 { 
  ManagementObjectSearcher searcher = new ManagementObjectSearcher( 
   "SELECT * FROM Win32_share"); 
  foreach (ManagementObject share in searcher.Get()) 
  { 
   Console.WriteLine(share.GetText(TextFormat.Mof)); 
  } 
 } 


} 
别忘记在引用中把System.Management添加进来。 


5、 怎样写程控制让系统中的某个文件夹共享或取消共享.? 
首先,这需要以有相应权限的用户登录系统才行。然后,试试下面的代码: 
using System; 
using System.Management; 

class CreateShare 
{ 
 public static void Main(string[] args) 
 { 
  ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share")); 

  object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};

  _class.InvokeMethod("create",obj); 
 } 
} 
将 
object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""}; 
改为 
object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""}; 
就可以实现授权给最多用户了。 


6、 如何获得系统服务的运行状态? 
private void getServices() 
{ 
 ManagementObjectCollection queryCollection; 
 string[] lvData =  new string[4]; 

 try 
 { 
  queryCollection = getServiceCollection("SELECT * FROM Win32_Service"); 
  foreach ( ManagementObject mo in queryCollection) 
  { 
   //create child node for operating system 
   lvData[0] = mo["Name"].ToString(); 
   lvData[1] = mo["StartMode"].ToString(); 
   if (mo["Started"].Equals(true)) 
    lvData[2] = "Started"; 
   else 
    lvData[2] = "Stop"; 
    lvData[3] = mo["StartName"].ToString(); 

    //create list item 
    ListViewItem lvItem = new ListViewItem(lvData,0); 
    listViewServices.Items.Add(lvItem); 
  } 
 } 
 catch (Exception e) 
 { 
  MessageBox.Show("Error: " + e); 
 } 
} 


7、 通过WMI修改IP,而实现不用重新启动? 
using System; 
using System.Management; 
using System.Threading; 

namespace WmiIpChanger 
{ 
 class IpChanger 
 { 
  [MTAThread] 
  static void Main(string[] args) 
  { 
   ReportIP(); 
   // SwitchToDHCP(); 
   SwitchToStatic(); 
   Thread.Sleep( 5000 ); 
   ReportIP(); 
   Console.WriteLine( "end." ); 
  } 

  static void SwitchToDHCP() 
  { 
   ManagementBaseObject inPar = null; 
   ManagementBaseObject outPar = null; 
   ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
   ManagementObjectCollection moc = mc.GetInstances(); 
   foreach( ManagementObject mo in moc ) 
   { 
    if( ! (bool) mo["IPEnabled"] ) 
     continue; 

    inPar = mo.GetMethodParameters("EnableDHCP"); 
    outPar = mo.InvokeMethod( "EnableDHCP", inPar, null ); 
    break; 
   } 
  } 

  static void SwitchToStatic() 
  { 
   ManagementBaseObject inPar = null; 
   ManagementBaseObject outPar = null; 
   ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
   ManagementObjectCollection moc = mc.GetInstances(); 
   foreach( ManagementObject mo in moc&nbs
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c#使用wmi查询usb设备信息示例
  • c#与WMI使用技巧集第1/2页
  • C#利用WMI操作DNS服务器(可远程操作,需要相应权限)

相关文章

  • 2017-05-28C#实现的一款比较美观的验证码完整实例
  • 2017-05-28c#日期间隔计算示例
  • 2017-05-28初步认识C#中的Lambda表达式和匿名方法
  • 2017-05-28c# 曲线图生成代码
  • 2017-05-28C#多线程之Thread中Thread.IsAlive属性用法分析
  • 2017-05-28C#实现汉字转换为拼音缩写的代码
  • 2017-05-28C#将时间转成文件名使用方法
  • 2017-05-28C#值类型和引用类型的深入理解
  • 2017-05-28C# SendInput 模拟鼠标操作的实现方法
  • 2017-05-28C#中Json的简单处理方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c#实现断点续传功能示例分享
    • C#流类FileStream学习使用笔记
    • C# 设计模式系列教程-抽象工厂模式
    • C#图像重新着色的方法
    • C#实现可捕获几乎所有键盘鼠标事件的钩子类完整实例
    • C#获取文件相关信息的方法
    • 使用mutex实现应用程序单实例运行代码分享
    • C#利用GDI绘制常见图形和文字
    • c#使用多线程的几种方式示例详解
    • C#之IP地址和整数互转的小例子

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有