轉(zhuǎn)載: http://singlepine.cnblogs.com/articles/299457.html
1.WMI簡(jiǎn)介 WMI是英文Windows?Management?Instrumentation的簡(jiǎn)寫,它的功能主要是:訪問本地主機(jī)的一些信息和服務(wù),可以管理遠(yuǎn)程計(jì)算機(jī)(當(dāng)然你必須要擁有足夠的權(quán)限),比如:重啟,關(guān)機(jī),關(guān)閉進(jìn)程,創(chuàng)建進(jìn)程等。 2.使用時(shí)首先添加System.Management.dll,然后引用
using
?System.Management;
using
?System.Threading;?
3.示例代碼
?
#region
1.如何用WMI獲得指定磁盤的容量
private
string
DriveType(
string
type)
{
string
rtntype=
""
;
switch
(type)
{
case
"
1
"
:
rtntype
=
"
Not Type
"
;
break
;
case
"
2
"
:
rtntype
=
"
Floppy disk
"
;
break
;
case
"
3
"
:
rtntype
=
"
Hard disk
"
;
break
;
case
"
4
"
:
rtntype
=
"
Removable drive or network drive
"
;
break
;
case
"
5
"
:
rtntype
=
"
CD-ROM
"
;
break
;
case
"
6
"
:
rtntype
=
"
RAM disk
"
;
break
;
default
:
break
;
}
return
rtntype;
}
private
void
Button1_Click(
object
sender, System.EventArgs e)
{
SelectQuery query
=
new
SelectQuery(
"
Select * From Win32_LogicalDisk
"
);
ManagementObjectSearcher searcher
=
new
ManagementObjectSearcher(query);
foreach
(ManagementBaseObject disk
in
searcher.Get())
{
Response.Write(disk[
"
Name
"
] +
"
"
+DriveType(disk[
"
DriveType
"
].ToString()) +
"
"
+ disk[
"
VolumeName
"
]+
"
<br>
"
);
}
}
#endregion
#region
2.如何用WMI獲得指定磁盤的容量
private
void
Button2_Click(
object
sender, System.EventArgs e)
{
ManagementObject disk
=
new
ManagementObject(
"
win32_logicaldisk.deviceid=\"c:\"
"
);
disk.Get();
Response.Write(
"
Logical Disk Size =
"
+ disk[
"
Size
"
] +
"
bytes
"
);
}
#endregion
#region
3.如何列出機(jī)器中所有的共享資源
private
void
Button3_Click(
object
sender, System.EventArgs e)
{
ManagementObjectSearcher searcher
=
new
ManagementObjectSearcher(
"
SELECT * FROM Win32_share
"
);
foreach
(ManagementObject share
in
searcher.Get())
{
Response.Write(share.GetText(TextFormat.Mof));
}
}
#endregion
#region
4.怎樣寫程控制讓系統(tǒng)中的某個(gè)文件夾共享或取消共享
private
void
Button4_Click(
object
sender, System.EventArgs e)
{
/*
首先,這需要以有相應(yīng)權(quán)限的用戶登錄系統(tǒng)才行
將
object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 實(shí)現(xiàn)的共享",""};
改為
object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 實(shí)現(xiàn)的共享",""};
就可以實(shí)現(xiàn)授權(quán)給最多用戶了。
*/
ManagementClass _class
=
new
ManagementClass(
new
ManagementPath(
"
Win32_Share
"
));
object
[] obj = {
"
C:\\Temp
"
,
"
我的共享
"
,
0
,
10
,
"
Dot Net 實(shí)現(xiàn)的共享
"
,
""
};
_class.InvokeMethod(
"
create
"
,obj);
}
#endregion
#region
5.如何獲得系統(tǒng)服務(wù)的運(yùn)行狀態(tài)
private
void
Button5_Click(
object
sender, System.EventArgs e)
{
string
[] lvData =
new
string
[
4
];
ManagementObjectSearcher searcher
=
new
ManagementObjectSearcher(
"
SELECT * FROM Win32_Service
"
);
foreach
(ManagementObject mo
in
searcher.Get())
{
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();
Response.Write(lvData[
0
]+lvData[
1
]+lvData[
2
]+lvData[
3
]);
}
}
#endregion
#region
6.通過WMI修改IP,而實(shí)現(xiàn)不用重新啟動(dòng)
private
void
Button6_Click(
object
sender, System.EventArgs e)
{
ReportIP();
//
SwitchToDHCP();
SwitchToprivate();
Thread.Sleep(
5000
);
ReportIP();
Response.Write(
"
end.
"
);
}
private
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
;
}
}
private
void
SwitchToprivate()
{
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(
"
Enableprivate
"
);
inPar[
"
IPAddress
"
] =
new
string
[] {
"
192.168.1.1
"
};
inPar[
"
SubnetMask
"
] =
new
string
[] {
"
255.255.255.0
"
};
outPar
= mo.InvokeMethod(
"
Enableprivate
"
, inPar,
null
);
break
;
}
}
private
void
ReportIP()
{
Response.Write(
"
****** Current IP addresses:
"
);
ManagementClass mc
=
new
ManagementClass(
"
Win32_NetworkAdapterConfiguration
"
);
ManagementObjectCollection moc
=
mc.GetInstances();
foreach
( ManagementObject mo
in
moc )
{
if
( ! (
bool
) mo[
"
IPEnabled
"
] )
continue
;
string
str=
"
{0}\n SVC: '{1}' MAC: [{2}]
"
;
str
=
string
.Format(mo[
"
Caption
"
].ToString(), mo[
"
ServiceName
"
].ToString(),mo[
"
MACAddress
"
].ToString());
Response.Write(str);
string
[] addresses = (
string
[]) mo[
"
IPAddress
"
];
string
[] subnets = (
string
[]) mo[
"
IPSubnet
"
];
Response.Write(
"
Addresses :
"
);
foreach
(
string
sad
in
addresses)
Response.Write(sad
+
"
<br>
"
);
Response.Write(
"
Subnets :
"
);
foreach
(
string
sub
in
subnets )
Response.Write(sub
+
"
<br>
"
);
}
}
#endregion
#region
7.如何利用WMI遠(yuǎn)程重啟遠(yuǎn)程計(jì)算機(jī)
private
void
Button7_Click(
object
sender, System.EventArgs e)
{
Response.Write(
"
Computer details retrieved using Windows Management Instrumentation (WMI)
"
);
Response.Write(
"
mailto:singlepine@hotmail.com
"
);
Response.Write(
"
=========================================================================
"
);
//
連接遠(yuǎn)程計(jì)算機(jī)
ConnectionOptions co =
new
ConnectionOptions();
co.Username
=
"
john
"
;
co.Password
=
"
john
"
;
System.Management.ManagementScope ms
=
new
System.Management.ManagementScope(
"
\\\\192.168.1.2\\root\\cimv2
"
, co);
//
查詢遠(yuǎn)程計(jì)算機(jī)
System.Management.ObjectQuery oq =
new
System.Management.ObjectQuery(
"
SELECT * FROM Win32_OperatingSystem
"
);
ManagementObjectSearcher query1
=
new
ManagementObjectSearcher(ms,oq);
ManagementObjectCollection queryCollection1
=
query1.Get();
foreach
( ManagementObject mo
in
queryCollection1 )
{
string
[] ss={
""
};
mo.InvokeMethod(
"
Reboot
"
,ss);
Response.Write(mo.ToString());
}
}
#endregion
#region
8.利用WMI創(chuàng)建一個(gè)新的進(jìn)程
private
void
Button8_Click(
object
sender, System.EventArgs e)
{
//
Get the object on which the method will be invoked
ManagementClass processClass =
new
ManagementClass(
"
Win32_Process
"
);
//
Get an input parameters object for this method
ManagementBaseObject inParams = processClass.GetMethodParameters(
"
Create
"
);
//
Fill in input parameter values
inParams[
"
CommandLine
"
] =
"
calc.exe
"
;
//
Execute the method
ManagementBaseObject outParams = processClass.InvokeMethod (
"
Create
"
, inParams,
null
);
//
Display results
//
Note: The return code of the method is provided in the "returnvalue" property of the outParams object
Response.Write(
"
Creation of calculator process returned:
"
+ outParams[
"
returnvalue
"
]);
Response.Write(
"
Process ID:
"
+ outParams[
"
processId
"
]);
}
#endregion
#region
9.如何通過WMI終止一個(gè)進(jìn)程
private
void
Button9_Click(
object
sender, System.EventArgs e)
{
ManagementObject service
=
new
ManagementObject(
"
win32_service=\"winmgmt\"
"
);
InvokeMethodOptions options
=
new
InvokeMethodOptions();
options.Timeout
=
new
TimeSpan(
0
,
0
,
0
,
5
);
ManagementBaseObject outParams
= service.InvokeMethod(
"
StopService
"
,
null
, options);
Response.Write(
"
Return Status =
"
+ outParams[
"
Returnvalue
"
]);
}
#endregion
#region
10.如何用WMI 來獲取遠(yuǎn)程機(jī)器的目錄以及文件
private
void
Button10_Click(
object
sender, System.EventArgs e)
{
ManagementObject disk
=
new
ManagementObject(
"
win32_logicaldisk.deviceid=\"c:\"
"
);
disk.Get();
Response.Write(
"
Logical Disk Size =
"
+ disk[
"
Size
"
] +
"
bytes
"
);
}
#endregion
#region
11.網(wǎng)卡的MAC地址
private
void
Button11_Click(
object
sender, System.EventArgs e)
{
ManagementClass mc
=
new
ManagementClass(
"
Win32_NetworkAdapterConfiguration
"
);
ManagementObjectCollection moc
=
mc.GetInstances();
foreach
(ManagementObject mo
in
moc)
{
if
((
bool
)mo[
"
IPEnabled
"
] ==
true
)
Response.Write(
"
MAC address
"
+mo[
"
MacAddress
"
].ToString()+
"
<br>
"
);
mo.Dispose();
}
}
#endregion
#region
12.CPU的系列號(hào)
private
void
Button12_Click(
object
sender, System.EventArgs e)
{
string
cpuInfo =
""
;
//
cpu序列號(hào)
ManagementClass cimobject =
new
ManagementClass(
"
Win32_Processor
"
);
ManagementObjectCollection moc
=
cimobject.GetInstances();
foreach
(ManagementObject mo
in
moc)
{
cpuInfo
= mo.Properties[
"
ProcessorId
"
].Value.ToString();
Response.Write(cpuInfo);
}
}
#endregion
#region
13.主板的系列號(hào)
private
void
Button13_Click(
object
sender, System.EventArgs e)
{
ManagementObjectSearcher searcher
=
new
ManagementObjectSearcher(
"
SELECT * FROM Win32_BaseBoard
"
);
foreach
(ManagementObject share
in
searcher.Get())
{
Response.Write(
"
主板制造商:
"
+ share[
"
Manufacturer
"
].ToString()) ;
Response.Write(
"
型號(hào):
"
+share[
"
Product
"
].ToString()) ;
Response.Write(
"
序列號(hào):
"
+share[
"
SerialNumber
"
].ToString()) ;
}
}
#endregion
#region
14.獲取硬盤ID
private
void
Button14_Click(
object
sender, System.EventArgs e)
{
String HDid;
ManagementClass cimobject
=
new
ManagementClass(
"
Win32_DiskDrive
"
);
ManagementObjectCollection moc
=
cimobject.GetInstances();
foreach
(ManagementObject mo
in
moc)
{
HDid
= (
string
)mo.Properties[
"
Model
"
].Value;
Response.Write(HDid);
}
}
#endregion
#region
15.獲取本機(jī)的用戶列表
private
void
Button15_Click(
object
sender, System.EventArgs e)
{
SelectQuery query
=
new
SelectQuery(
"
SELECT * FROM Win32_UserAccount
"
);
ManagementObjectSearcher searcher
=
new
ManagementObjectSearcher(query);
foreach
(ManagementObject os
in
searcher.Get())
{
Response.Write(os[
"
Name
"
]);
}
}
#endregion
}
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

