Здесь место для поиска ExtendedRightAccessRule .
А вот простой пример, который позволяет пользователю домена 'user1' сбросить пароль для пользователей, представленных в OU 'ForUser1'.Вы просто должны позволить своему пользователю добавить компьютер в OU.@ Брайан Десмон даст вам GUID.
/* Connection to Active Directory
*/
DirectoryEntry workingOU = new DirectoryEntry();
workingOU.Options.SecurityMasks = SecurityMasks.Owner | SecurityMasks.Group | SecurityMasks.Dacl | SecurityMasks.Sacl;
workingOU.Path = "LDAP://WM2008R2ENT:389/ou=ForUser1,dc=dom,dc=fr";
/* Retreive Obect security
*/
ActiveDirectorySecurity adsOUSec = workingOU.ObjectSecurity;
/* Ellaborate the user to delegate
*/
NTAccount ntaToDelegate = new NTAccount("dom", "user1");
SecurityIdentifier sidToDelegate = (SecurityIdentifier)ntaToDelegate.Translate (typeof(SecurityIdentifier));
/* Specils Guids
*/
Guid UserForceChangePassword = new Guid("00299570-246d-11d0-a768-00aa006e0529");
Guid userSchemaGuid = new Guid("BF967ABA-0DE6-11D0-A285-00AA003049E2");
Guid pwdLastSetSchemaGuid = new Guid("bf967a0a-0de6-11d0-a285-00aa003049e2");
/* Ellaborate ACEs
*/
ExtendedRightAccessRule erarResetPwd = new ExtendedRightAccessRule(ntaToDelegate, AccessControlType.Allow, UserForceChangePassword, ActiveDirectorySecurityInheritance.Descendents, userSchemaGuid);
PropertyAccessRule parPwdLastSetW = new PropertyAccessRule(ntaToDelegate, AccessControlType.Allow, PropertyAccess.Write, pwdLastSetSchemaGuid, ActiveDirectorySecurityInheritance.Descendents, userSchemaGuid);
PropertyAccessRule parPwdLastSetR = new PropertyAccessRule(ntaToDelegate, AccessControlType.Allow, PropertyAccess.Read, pwdLastSetSchemaGuid, ActiveDirectorySecurityInheritance.Descendents, userSchemaGuid);
adsOUSec.AddAccessRule(erarResetPwd);
adsOUSec.AddAccessRule(parPwdLastSetW);
adsOUSec.AddAccessRule(parPwdLastSetR);
workingOU.CommitChanges();
Отредактировано (2011-11-04)
В моем понимании то, что вы хотите сделать, это своего рода делегирование;Внутри Active-Directory делегирование становится реальностью с правами на объекты.В вашем случае вы хотите разрешить пользователю создавать учетную запись компьютера.В большинстве случаев администраторы делают это для всего домена:
Если вы попробуете это, вы увидите новый ACE (Access Control Entry) в домене nodACL (Список контроля доступа).В этом примере я просто делегирую право в одном подразделении.
Второе издание (2011-11-04)
Он является доказательством того, что я пишу:
Если вы посмотрите на вкладку безопасности