1

Как я могу перечислить ADSI (Active Directory Service Interfaces) service providers в C#?Как указать доступные поставщики услуг ADSI (службы Active Directory)?

+1

Я понимаю ваш вопрос сейчас, я думал, вы имели в виду какие серверы предоставляют услуги, но вы имели в виду, какие услуги предоставляются. Я не знаю ответа, но, боюсь, вы можете спросить на сервере ServerFault.com, если кто-нибудь знает, как их перечислить с помощью vbscript или что-то в этом роде (поскольку это похоже на то, что может заинтересовать системных администраторов), и если вы можете получить ответ, который не должен быть слишком сложным, чтобы перевести его на C#. –

+0

+1 Спасибо за подсказку. –

ответ

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(); 
} 
0

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