さて、ネットワークからのすべてのコンピュータ名をリストする別の同様のエントリにコードがあります...それはあなたの要件の最初の部分です。System.DirectoryServices
第二部では、許可のためのいくつかもあるので、クラスを掘り下げる必要があると思います...頑張ってください。
//Lists all available computer names on the network.
public static List<String> ListNetworkComputers()
{
var computerNames = new List<String>();
var computerSchema = "Computer";
var entries = new System.DirectoryServices.DirectoryEntry("WinNT:");
foreach (var domains in entries.Children)
{
foreach (var computer in domains.Children)
{
if (computer.SchemaClassName.ToLower().Contains(computerSchema .ToLower()))
{
computerNames.Add(computer.Name);
}
}
}
return computerNames;
}
値を印刷したところ、うまくいきました。
foreach (string lst in ListNetworkComputers())
{
Console.WriteLine("PC: " + lst);
}
(上記のコードから取得:私のネットワークの場所からコンピューター名を取得する)
必要なのは、コードからWin32_ShareWMIにアクセスすることです。System.Management.dllへの参照を追加し、次のコードを使用します。
ここのトピックからのVB.NETのコード例:http:
//www.pcreview.co.uk/forums/finding-share-s-directory-spec-t3064222.html
VB.netプログラムのC#バージョン:
class Program
{
static void Main(string[] args)
{
var objClass = new System.Management.ManagementClass("Win32_Share");
foreach(var objShare in objClass.GetInstances())
{
Console.WriteLine(String.Format("{0} -> {1}",
objShare.Properties["Name"].Value, objShare.Properties["Path"].Value));
}
}
}
上記のコードの結果を、Windowsコマンドプロンプトで次のコマンドを実行して得られる結果と比較できます。
C:\net share
これにより、共有名(共有時に指定される共有名、つまりMySharedDir)とリソース(Windowsパス、つまりC:\ myshareddir)が得られます。