Я не могу дать решение вашей проблемы сейчас, но после прочтения другого ответа я решил написать несколько комментариев в качестве ответа, чтобы иметь больше места. Я уверен, что источником проблемы является использование LookupAccountSid функции или LookupAccountName для внутреннего использования. Таким образом, вы получаете ошибку. Я нахожу странным, что ошибка ERROR_INVALID_SID
(1337) ошибка: «Структура идентификатора безопасности является недопустимым». документируется только в некоторых API, таких как ConvertStringSidToSid , ConvertSidToStringSid , AddAccessAllowedAce , AddAccessAllowedAceEx и некоторых других, которые не должны использоваться в коде, который Вы описываете.
Если для получения SID какой-либо учетной записи используется, например, LookupAccountName
, можно установить параметр lpSystemName
. Это может быть очень важно, если нужно разрешить имя из домена, которому нет прямого доверия от домена, к которому принадлежит компьютер. Например, если у вас есть один основной домен и два домена ресурсов, и вы пытаетесь разрешить учетную запись из одного домена ресурсов на компьютере из другого домена ресурсов. В случае использования NULL в качестве lpSystemName
не удастся, но в случае использования любого сервера из основного домена в качестве lpSystemName
, например контроллера домена главного домена, вы сможете разрешить любой аккаунт с любых доменов.
В случае, если любое «открытие портов для LSA» действительно не будет работать. Чтобы действительно помочь вам, мне нужно знать синтаксис pwszUserDN
, который вы используете в ADsOpenObject
или SetUserCannotChangePassword
. Есть несколько возможностей, которые вы можете использовать в Binding String (см. Также здесь ). Я надеюсь, что вы можете решить эту проблему, если вы измените синтаксис. Например, вы можете попытаться указать сервер явно. Например, вы можете использовать
LDAP://server01/CN=Jeff Smith,CN=users,DC=fabrikam,DC=com
или
LDAP://domain2.fabrikam.com/CN=Users,DC=domain2,DC=fabrikam,DC=com
вместо
LDAP://CN=Jeff Smith,CN=users,DC=fabrikam,DC=com