Я хочу проверить, имеет ли произвольный пользователь доступ на запись к атрибутам определенного объекта Active Directory. Я думаю, что одна часть решения выглядит так:
NTAccount Account = new NTAccount("Domain\\XYZ");
SecurityIdentifier Sid =
(SecurityIdentifier)Account.Translate(typeof(SecurityIdentifier));
Это, кажется, позволяет мне получить конкретное представление из строкового представления пользователя. Другая часть головоломки, я думаю, это:
string strMemberString = "LDAP://OU=Test,DC=Domain,DC=local";
DirectoryEntry computers = new DirectoryEntry();
computers.Path = strMemberString;
computers.Options.SecurityMasks = SecurityMasks.Owner | SecurityMasks.Group
| SecurityMasks.Dacl | SecurityMasks.Sacl;
foreach (DirectoryEntry computer in computers.Children)
{
if (computer.Name == "CN=Test")
{
ActiveDirectorySecurity sdc = computer.ObjectSecurity;
//...
Не уверен, куда идти дальше. Как мне закончить это? Есть ли совершенно другой способ, которым я должен следовать? Я использую .net 4.0.
Я бы предпочел, чтобы решение было целиком кодом BCL, а не PInvoke или WMI.