1

如何在 C# 中列出可用的ADSI(Active Directory 服务接口)服务提供者?

4

2 回答 2

1

我发现:

foreach (object obj in (IEnumerable)Marshal.BindToMoniker("ADs:"))
{
    obj.GetType().InvokeMember("Name", BindingFlags.DeclaredOnly | 
        BindingFlags.Public | BindingFlags.NonPublic | 
        BindingFlags.Instance | 
        BindingFlags.GetProperty, null, obj, null).Dump();
}   
于 2010-08-06T23:36:43.763 回答
0

Microsoft 有一个关于此主题的 KB-233023:如何查找系统上的所有 ADSI 提供程序

另一种变体:

    public static IEnumerable<string> GetAdsiProviders()
    {
        var providers = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\ADs\Providers");
        if (null == providers) yield break;

        foreach (var name in providers.GetSubKeyNames())
        {
            yield return name + ":";
        }
    }
于 2012-05-25T22:49:23.170 回答