其中 Create 方法说明如下:
int Create
( String SharePath; //共享路径,你要把那个路径共享
String ShareName; //共享后,访问时的标示名称
Int ShareType; //共享类型,一般赋 0 即可,表示磁盘共享
Int MaxUsers; //最大用户数
String Description; //描述
String PassWord; //访问密码
)
返回 0 表示成功创建共享。下面的程序创建共享后,只有点击右键后查看共享才能看见此文件夹已经共享,不然是看不出来的。就形如 C$ 形式,系统级共享。
private void RemoteShare_Click(object sender, System.EventArgs e)
{ //连接远程计算机,我们要想对其进行操作,必须先连接上
ConnectionOptions Myconnect = new ConnectionOptions();
Myconnect.Username = "ZhangDong";
Myconnect.Password = "1234";
ManagementPath RemoteNameSpace = new ManagementPath("\\\\ServerName\\root\\cimv2");
ManagementScope Myscope = new ManagementScope(RemoteNameSpace,Myconnect);
//先连接上要引用的 WMI 类在这里我们引用 Win32_Share 类
ManagementPath SharePath = new ManagementPath("Win32_Share");
ObjectGetOptions otherOption = new ObjectGetOptions(null,new
TimeSpan(0,0,10) ,true);
ManagementClass _processClass = new ManagementClass(Myscope, SharePath,
otherOption);
object sharea = {"C:\\Program Files","我的共享",0,10,"Dot Net 实现的共享",""};
object result = _processClass.InvokeMethod ("Create", sharea);
MessageBox(0,"返回的值是:" + result.ToString() + " 共享名称:" + sharea,"共享信息",0); }
针对上面的程序我们需要注意的一点就是,参数的传递形式,我们采用的是下面这种形式
object sharea = {"C:\\Program Files","我的共享",0,10,"Dot Net 实现的共享",""};
这个数组代表的是方法中传递的参数, WMI 类中其它的方法调用都可以参照着这种形式.
比如前面我们讲的,列举所有开启的进程时,如果我们想远程关闭某个开启的进程,我们需要用下面的代码来实现:
foreach (ManagementObject service in queryCollection1)
{ //判断是否开启了delphi 程序,如果是,关闭它
if (service["Name"].ToString()=="delphi32.exe")
{
string Tparas = {"0"}; //参数数组
service.InvokeMethod("Terminate", Tparas); //终止方法的调用
}
//列举所有进程的名字,和此应用程序的路径,当然还有其它一些属性,只不过这//里没有列举出来
listBox1.Items.Add("Service: " + service["Name"] + " FilePath: " + service["ExecutablePath"]);
}
总结:
关于 WMI 还有许多其它的功能,我希望通过本文大家能够对 .NET 中的Windows 管理有所了解。同时也希望爱好 C# 的朋友们互相多多交流经验