.NET 3.5 ve üstündeyseniz, System.DirectoryServices.AccountManagement
(S.DS.AM) ad alanını gözden geçirmelisiniz. Hepsi burada! okuyunuz:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
}
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");
// if found....
if (group != null)
{
// iterate over members
foreach (Principal p in group.GetMembers())
{
Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
// do whatever you need to do to those members
}
}
: MSDN docs on System.DirectoryServices.AccountManagement
Temelde
- Managing Directory Security Principals in the .NET Framework 3.5
- , sen AD kullanıcıları ve/veya grupları bulmak kolay etki alanı bağlamını tanımlayabilir ve Yeni S.DS.AM, AD'deki kullanıcılarla ve gruplarla oynamayı gerçekten çok kolaylaştırıyor!
Son nokta: izinler. Bunlar Active Directory'de saklanmaz - bu nedenle, herhangi bir AD kodundan bunları alamazsınız.
İzinler, tek tek dosya sistemi öğelerinde, ör. dosyalar ve/veya dizinler - veya diğer nesneler (kayıt defteri anahtarları vb. gibi). Bir AD grubunuz veya kullanıcı hesabınız varsa, SID (Güvenlik Tanımlayıcısı) özelliğini, SID'nin tüm Windows üzerinde ACL'de (Erişim Kontrol Listeleri) görüneceğini okuyabilirsiniz, ancak kullanıcı veya gruptan, herkesin alacağı bir mekanizma yoktur. Makine/sunucuda herhangi bir yere sahip olabileceği izinler.
Dosya ve dizin izinleri örn.
FileInfo info = new FileInfo(@"D:\test.txt");
FileSecurity fs = info.GetAccessControl();
DirectoryInfo dir = new DirectoryInfo(@"D:\test\");
DirectorySecurity ds = dir.GetAccessControl();
deşifre ve bunların yapım duygusu tamamen bambaşka bir hikaye: FileInfo
ve DirectoryInfo
sınıflarında .GetAccessControl()
yöntemi kullanılarak alınacak!
hangi dilde? – TheGeekYouNeed
.NET/C# içinde Active Directory API'ları kullanıyorum. – user802165