代码之家  ›  专栏  ›  技术社区  ›  TN.

如何列出可用的ADSI(Active Directory服务接口)服务提供程序?

  •  1
  • TN.  · 技术社区  · 14 年前

    我该怎么列 ADSI (Active Directory Service Interfaces) service providers 在C?

    2 回复  |  直到 12 年前
        1
  •  1
  •   TN.    14 年前

    我发现:

    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();
    }   
    
        2
  •  0
  •   tretyak    12 年前

    Microsoft在此主题上有一个KB-233023: How To Find All ADSI Providers on a System

    另一种变体:

        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 + ":";
            }
        }