设置 AD 标志时获取"The security ID structure is invalid"
Getting "The security ID structure is invalid" while setting AD flag
这是与本线程相同的问题:安全ID结构无效,在为AD用户属性设置新的SecurityDescriptor时获得此错误,但我使用c++而不是。net。
我想为Active Directory帐户设置"用户不能更改密码"标志。我从MS使用这个代码,但得到一个错误
安全ID结构无效。
这发生在SetUserCannotChangePassword()
方法中,在这一行:
//update the security descriptor property
hr = pads->Put(sbstrSecDesc, svar);
此错误仅在我从与我想设置AD标志的用户不在同一域中的计算机进行测试时发生。如果我在同一个域上运行我的应用程序,我修改一切都很好。
关于这个错误代码,我找到了这篇文章。为LSA打开端口的建议不起作用——我去激活了防火墙,但这并不能解决问题。我只有设置这个标志的问题。其他标志如"UserMustChangePassword"没有问题。
有什么建议吗?
我不确定这是否解决了您的问题,因为问题很可能是微软框架中的某种错误。
你提到这个错误只会发生在你正在更改的域之外的计算机/用户上,所以你可能会在执行应用程序之前尝试建立到域服务器的可信连接。这可以通过许多不同的方式完成,但最简单的是将IPC$隐藏共享作为域管理员挂载到域控制器上。只需在命令提示符下执行以下命令:
NET USE \<DOMAIN-CONTROLER>IPC$ /user:<DOMAIN-NAME><Domain-admin-user> <domain-admin-user-password>
同样,它可能解决也可能不解决你的问题,但值得一试:)
我现在不能提供你的问题的解决方案,但在我读了另一个答案后,我决定写一些评论作为答案有更多的地方。我确信问题的根源是LookupAccountSid函数或LookupAccountName在内部的使用。你会得到一个错误。我发现奇怪的是,错误ERROR_INVALID_SID
(1337)错误:"安全ID结构无效。"仅记录在一些API中,如ConvertStringSidToSid, ConvertSidToStringSid, AddAccessAllowedAce, AddAccessAllowedAceEx和其他一些不应该在您描述的代码中使用。
例如使用LookupAccountName
获取某个帐户的SID,则可以设置lpSystemName
参数。如果需要从计算机所属的域解析没有直接信任的域的名称,则这一点非常重要。例如,如果您有一个主域和两个资源域,并且您尝试从计算机上的一个资源域从另一个资源域解析帐户。在这种情况下,使用NULL作为lpSystemName
将失败,但在使用主域的任何服务器作为lpSystemName
的情况下,例如主域的域控制器,您将能够解析来自任何域的任何帐户。
在这种情况下,任何"为LSA打开端口"都将不起作用。为了能够真正帮助你,我需要知道pwszUserDN
的语法,你在ADsOpenObject
或SetUserCannotChangePassword
中使用。您可以在绑定字符串中使用一些可能性(参见这里)。如果您更改语法,我希望可以解决这个问题。例如,您可以尝试显式指定服务器。例如,您可以使用
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
- 从函数角度看ID到文件路径的内部与外部映射
- 通过组合不同的类型来创建唯一的id
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- FFMPEG配置文件级别id大小无效
- 方法内部但循环仍得到预期的不合格id错误C++
- 如何获取 GLFW 窗口 ID?
- 当简单捕获中的标识符显示为参数的声明符 ID 时,没有编译器诊断
- 显示数组中的学生 ID 和最高分
- C++:"("令牌"之前有预期的非限定 id 指向类中成员函数的指针
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 错误:令牌 { '{' 之前应存在非限定 ID
- Python to C++ Data structure API
- 断言"id < 0"在Qt ActiveX中失败
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 如何根据两个因素组织向量:id 和数量?(C++)
- 在返回 0 之前应为非限定 ID
- Direct3D 11 - HLSL - 获取顶点索引 ID
- 编译时检查特征专用化是否具有唯一 ID
- 设置 AD 标志时获取"The security ID structure is invalid"