好的。经过大量挖掘,我终于找到了解决方案: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 %i\n", ret);
if (ret==0)
{
wprintf( L"PdcConenctionStatus: %i\n", 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: %i\n", buffer->netlog2_tc_connection_status);
wprintf( L"Flags: %i\n", 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*)!