2015-03-02 2 views
0

Я пытаюсь обновить поле, относящееся к моему собственному объекту пользователя в Active Directory, используя ADSI и C++. Операционная система - Windows Server 2012 Standard.Общий доступ запретил пытаться обновить мое собственное поле в AD

Я могу читать, я могу позвонить Put без проблем, но когда я вызываю SetInfo, он возвращается с «General access denied». Я подтвердил, что это мой собственный объект пользователя, к которому я пытаюсь получить доступ.

я получить свой собственный FQDN, как это:

GetUserNameEx(EXTENDED_NAME_FORMAT::NameFullyQualifiedDN, pszFullyQualifiedDN, &dwFullyQualifiedDN); 

Затем я использую это так:

LPTSTR pszObj = (LPTSTR)LocalAlloc(LPTR, dwMemToAlloc); 
wcscpy_s(pszObj, dwMemToAlloc/sizeof(TCHAR), L"LDAP://"); 
wcscat_s(pszObj, dwMemToAlloc/sizeof(TCHAR), pszFullyQualifiedDN); 

Я связываю к объекту, как это:

ADsGetObject(pszObj, IID_IADs, (LPVOID*)&pObject); 

Этот вызов успешно завершено:

pObject->Get(CComBSTR("Description"), &var); 

Этот вызов также преуспевает:

VariantClear(&var); 

V_BSTR(&var) = SysAllocString(L"Some new value"); 
V_VT(&var) = VT_BSTR; 
hr = pObject->Put(CComBSTR("Description"), var); 

Попытка совершить вышеуказанное изменение, используя следующие:

pObject->SetInfo(); 

Это где это не удается.
Он возвращает E_ACCESSDENIED Ошибка общего отказа в доступе.

Как вы можете видеть, это мой собственный объект пользователя, который я пытаюсь обновить. По моему пониманию, которое должно работать, я являюсь членом группы пользователей домена. Который я есть.

В чем может быть проблема?

ответ

0

Обычно я нахожу ответ на свой вопрос, прежде чем кто-либо еще получит время ответить.

Проблема в том, что в контроллере домена Windows Server 2012 разрешение на запись в publicpersonal, если на то пошло) свойства не предоставляются «САМО». Поле, которое я пытаюсь написать, принадлежит публичным свойствам. Единственное свойство установлено, что пользователь может изменить для себя в Windows Server 2012, по умолчанию, кажется, «Private-Information», который состоит из ms-PKI-Credential-Roaming-Tokens, ms-PKI-RoamingTimeStamp, ms-PKI-DPAPIMasterKeys, ms-PKI-AccountCredentials

Почему на земле пользователь не имеет разрешение на запись в свои личные поля в Windows Server 2012 AD, Microsoft?!?!?!

EDITED

Ответ на другой вопрос лежит here. Я не смог написать там, потому что я вошел в систему, используя административную учетную запись.

Если пользователь находится или был членом административной группы, такие как Администраторы домена, счета операторов, Операторы архива, Операторы печати и т.д., объект AdminSDHolder защищает членов этих групп, сбросив их разрешение на по умолчанию каждые 5 минут, а также наложение разрешений на них.

Смежные вопросы