LoginSignup
7
9

More than 5 years have passed since last update.

共有フォルダの情報を取得する方法

Posted at

なんかまとまってこれ、というのが無かったので。
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

7
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9