验证本地计算机的活动目录域信任关系
Verify Active Directory domain trust relationship of the local machine
我必须找出本地计算机是否仍加入域,或者另一台计算机是否使用了计算机帐户,或者计算机帐户是否已重置。
换句话说,我需要验证本地机器和域之间的信任关系
NLTest/SC_VERIFY:{Domain} 做得很好。
是否有任何 API 函数可用于检测本地计算机是否丢失了与域的信任关系?我不喜欢从我的程序调用外部可执行文件。
到目前为止我尝试过:
- NetGetJoinInformation():它没有意识到这一点。
- DsBind*():它没有意识到这一点。还尝试在本地系统帐户下调用它。
有什么想法吗?
好的。经过一番挖掘,我终于找到了解决方案:I_NetLogonControl2
NETLOGON_INFO_2* buffer=NULL;
LPBYTE domainName = (LPBYTE) L"eng";
int ret = I_NetLogonControl2(NULL, NETLOGON_CONTROL_TC_VERIFY, 2, (LPBYTE) &domainName, (LPBYTE*)&buffer);
wprintf( L"I_NetLogonControl2() returned %in", ret);
if (ret==0)
{
wprintf( L"PdcConenctionStatus: %in", buffer->netlog2_pdc_connection_status);
if (buffer->netlog2_pdc_connection_status==0)
wprintf(L"Trust relationship verified.n");
else
wprintf(L"Trust relationship FAILED.n");
wprintf( L"TcConenctionStatus: %in", buffer->netlog2_tc_connection_status);
wprintf( L"Flags: %in", buffer->netlog2_flags);
}
return 0;
所以神奇的东西隐藏在NETLOGON_INFO_2::netlog2_pdc_connection_status中。
如果此值为 86 (ERROR_INVALID_PASSWORD) 或 5 (ERROR_ACCESS_DENIED),则计算机帐户已更改(或重置)。
如果已删除计算机帐户,则值为 1787 (ERROR_NO_TRUST_SAM_ACCOUNT)
希望这对其他人有所帮助!
不幸的是,MSDN 文档并不精确。指定"NETLOGON_CONTROL_TC_VERIFY"时,数据参数 (LPBYTE) 必须指向 (LPWSTR*)!
您可以尝试登录用户功能来执行网络登录(LOGON32_LOGON_NETWORK)。
如果工作站中断了与域的信任,它将无法验证您的凭据。
您将需要一些域凭据,这些凭据当然可以执行网络登录,而不是本地登录。
您的另一个选项是使用已授予网络服务登录的本地帐户,并尝试访问其他域工作站资源。您可能会收到拒绝访问错误或信任关系失败,具体取决于哪个服务器上的哪个资源。
最后,您仍然可以在系统事件日志中搜索事件 ID 指示信任失败。
您无法但是我们没有任何可用于此目的的知名帐户
在域站点(在 AD 中)上检查工作站帐户状态,直到您以某种方式进行身份验证,只需本地状态。
NetLogon_Control2 用于 BDC 到 PDC 通信;不适用于我在 Win 7 中的测试
Microsoft页 --
言论
此函数可用于请求 BDC 确保其 SAM 数据库副本保持最新。它还可用于确定 BDC 当前是否具有向 PDC 开放的安全通道。
- 我可以信任表示整数的浮点或双精度来保持精度吗
- C++GTKMM gui循环依赖关系
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- Doxygen - 如何在不生成图形的情况下生成文本调用关系结果
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- 在 c++ 中对字符串进行操作的关系运算符无法按预期工作
- 如何记住这种递归关系?
- 如何在头文件中声明类模板(由于循环依赖关系)
- 移动语义和深层/浅层复制之间有什么关系?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 对在不同二进制文件中创建的对象文件的依赖关系
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- OpenVINO - 推理库插件 libMKLDNNPlugin.so 无法解析依赖关系
- 模拟测试中类的依赖关系
- 关于记忆后这种递归关系的时间复杂度
- C++模板方法中的循环依赖关系
- 解析正交模块的依赖关系
- 验证本地计算机的活动目录域信任关系