なんかまとまってこれ、というのが無かったので。
WMIを使って取得する。
System.Management
を参照に追加すること。
Linqを使わないと死ぬ病気の為、LINQで扱える様にしてみた(ただし大した事はしていない)。
共有フォルダの取得
using System.Management;
using (var searcher = new ManagementObjectSearcher("SELECT * FROM win32_share"))
{
var list = searcher.Get().Cast<ManagementObject>().Select(x => new { Name = x["Name"], Path = x["Path"]});
foreach (var element in list)
{
Console.WriteLine("共有名:" + element.Name + " パス:" + element.Path);
}
}
共有フォルダ意外の共有リソース持ってきてるけど、Linqが使えるならどうとでもなるだろう。
※本当は"SELECT * FROM Win32_ShareToDirectory"
で持ってくるんだろうけど、データの扱いやすさ的にこっちにしてる。
ForEachメソッドとか使えばワンライナーも可能になる。
後はSQL文のところを弄って応用すれば、他にいろんな情報取ってこれると思う。
WMIに関して詳しいのは以下のページ
WMI Fun!
http://www.wmifun.net/
あとは公式のドキュメントとかで。
MSDN - WMI Reference
http://msdn.microsoft.com/ja-jp/library/windows/desktop/aa394572(v=vs.85).aspx