我有点迷路了,我有一个任务是从网络域中获取所有文件夹,例如(我的网上邻居/整个网络/Microsoft Windows 网络/xyNetwork)。
我必须获取所有文件夹和子文件夹,然后获取分配给该文件夹的所有安全组以及授予每个安全组的权限。
我之前做过的第二部分,然而,获取所有文件夹列表的第一部分似乎非常复杂。
任何可能有帮助的指南或参考资料?
我有点迷路了,我有一个任务是从网络域中获取所有文件夹,例如(我的网上邻居/整个网络/Microsoft Windows 网络/xyNetwork)。
我必须获取所有文件夹和子文件夹,然后获取分配给该文件夹的所有安全组以及授予每个安全组的权限。
我之前做过的第二部分,然而,获取所有文件夹列表的第一部分似乎非常复杂。
任何可能有帮助的指南或参考资料?
好吧,另一个类似条目中有一个代码列出了网络中的所有计算机名称......这是您要求的第一部分。对于第二部分,我认为您需要深入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);
}
(以上代码取自:Getting computer names from my network places)
您需要的是从您的代码中访问 Win32_Share WMI。添加对 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)。
你可以简单地使用GetDirectories
. 例如:
var folders = Directory.GetDirectories(@"\\server\share");
要获取所有目录(即包括子目录),请使用以下命令:
var folders = Directory.GetDirectories(@"\\server\share", "*", SearchOption.AllDirectories));