WMI
* Windows 上でいろんな情報を取得することが出来る機能
WMI Library
Win32_Process
* プロセスを表す
Win32_ComputerSystem
* Windows環境のシステムオペレーションを表す
参考文献
http://www.anchorsystems.jp/anchor/ashp/netmon/samples/wmi_os.html#Win32_ComputerSystem.htmhttp://www.wmifun.net/library/
サンプル
実行中の各プロセス表示
using System.Management; private void button1_Click(object sender, EventArgs e) { string result = string.Empty; using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Process")) { using (ManagementObjectCollection managementObjects = objectSearcher.Get()) { foreach (ManagementObject managementObject in managementObjects) { result = result + managementObject["Description"].ToString() + ":" + managementObject["ProcessId"].ToString() + "\n"; } } } this.textBox5.Text = result; }
CPU一覧の情報
private void button2_Click(object sender, EventArgs e) { // クラスを取得 ManagementClass managementClass = new ManagementClass("Win32_Processor"); // CPU一覧を取得 ManagementObjectCollection managementObjects = managementClass.GetInstances(); string output = string.Empty; // CPU情報を一つずつ取り出す foreach (ManagementObject managementObject in managementObjects) { // 情報を表示 output = output + managementObject["DeviceID"].ToString() + " / " + managementObject["Name"].ToString() + " / " + managementObject["MaxClockSpeed"].ToString() + " / " + managementObject["L2CacheSize"].ToString() + "\n"; } this.textBox1.Text = output; }
Windows環境のシステムオペレーション情報
private void button3_Click(object sender, EventArgs e) { string path = @"\\" + Environment.MachineName + @"\root\cimv2"; ManagementScope scope = new ManagementScope(path); scope.Connect(); ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_ComputerSystem"); string result = string.Empty; using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher(scope, query)) { using (ManagementObjectCollection managementObjects = objectSearcher.Get()) { foreach (ManagementObject managementObject in managementObjects) { result = result + managementObject["Caption"].ToString() + " / " + managementObject["AdminPasswordStatus"].ToString() + " / " + managementObject["AutomaticResetBootOption"].ToString() + " / " + managementObject["Domain"].ToString() + " / " + managementObject["UserName"].ToString() + "\n"; } } } this.textBox1.Text = result; }
参考文献
http://www.wmifun.net/step/csn_01.htmlhttp://dobon.net/vb/dotnet/system/wmiwin32os.html
http://uchukamen.com/Programming/WMI/index.htm
http://www.shise.net/wiki/wiki.cgi?page=C%23%2F%A5%E1%A5%E2%2FWMI
http://anoyoroshi.blog32.fc2.com/blog-entry-3.html
http://blogs.technet.com/b/jpilmblg/archive/2009/04/23/wmi-sample-code-managed-vb-c-wmi-exe.aspx
WMI 名前空間のクラスを一覧表示する
http://msdn.microsoft.com/ja-jp/library/ms257362.aspxhttp://www.slideshare.net/TomoyukiObi/wf4-wmi-ps