c#与WMI使用技巧集

本文介绍了如何使用C#和WMI(Windows Management Instrumentation)来获取和管理系统的各种信息,如磁盘信息、共享资源、服务状态、IP配置、远程重启、进程管理和硬件信息等。通过示例代码展示了如何利用WMI查询和操作系统资源。
摘要由CSDN通过智能技术生成

什么是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
{

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值