1

ネットワーク ドメインからすべてのフォルダを取得するタスクがあります。たとえば、(マイ ネットワーク/ネットワーク全体/Microsoft Windows ネットワーク/xyNetwork)。

すべてのフォルダーとサブフォルダーを取得してから、このフォルダーに割り当てられたすべてのセキュリティ グループと、各セキュリティ グループに付与された権限を取得する必要があります。

前に行った 2 番目の部分ですが、すべてのフォルダーのリストを取得する最初の部分は非常に複雑なようです。

役立つガイドやリファレンスはありますか?

4

2 に答える 2

2

さて、ネットワークからのすべてのコンピュータ名をリストする別の同様のエントリにコードがあります...それはあなたの要件の最初の部分です。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)が得られます。

于 2013-01-15T15:54:37.580 に答える
0

を簡単に使用できますGetDirectories。例えば:

var folders = Directory.GetDirectories(@"\\server\share");

すべてのディレクトリ (つまり、サブディレクトリを含む) を取得するには、次を使用します。

var folders = Directory.GetDirectories(@"\\server\share", "*", SearchOption.AllDirectories));
于 2013-01-15T15:18:15.547 に答える