C#与ScriptCenter

知识果然是相通的,以前玩脚本的学到的知识果然还是可以在 C#中被应用。

举个例子,比如说枚举各硬盘分区空闲容量。其实如果只是为了满足自己的好奇心的话用Notepad写个vbs脚本就行了。去下载个ScrpitCenter,里面几乎能想到的都有了。

Const HARD_DISK = 3
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
For Each objDisk in colDisks
    Wscript.Echo "DeviceID: "& vbTab & objDisk.DeviceID       
    Wscript.Echo "Free Disk Space: "& vbTab & objDisk.FreeSpace
Next

现在问题是,假如C#的程序中要集成这个功能,那又该怎么处理呢?

首先需要肯定,C#对WMI提供了支持。当然我们要添加一个引用,System.Management.dll。编码时也要using它。

后续的代码很好理解,照猪画砍了鼻子的大象就行了。

            ManagementObjectSearcher query;
            ManagementObjectCollection queryCollection;
            
string  sql  =   " Select * from Win32_LogicalDisk Where DriveType = 3 " ;

            query 
=   new  ManagementObjectSearcher(sql);
            queryCollection 
=  query.Get();

            
foreach  (ManagementObject mo  in  queryCollection)
            
{

                MessageBox.Show(String.Format(
"{0}空闲 {1}", mo["DeviceID"].ToString(), mo["FreeSpace"].ToString()));
            }

mo的属性正好ScriptCenter里面都告诉我们了。

另外还有一类情况,两边分别提供不同的方法。

比如往AD里添加新用户,vbs可以直接GetObject("LDAP://......"),但C#就有现成的类了,DirectoryEntry。但即便这样vbs的脚本还是有参考价值的,有哪些属性,具体怎么拼写等都可以参考。当然最好还是查MSDN,不过实再想偷懒的话参考ScriptCenter给出的例子也够了。

我也想过,实在不行,干脆动态生成个脚本文件,然后让C# Process.Start调用。不过仅限于想想而已,目前还真没发现有这么实现的必要。

条条道路通罗马,选一条自己喜欢的吧。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值