好的。大量的挖掘後,我終於找到了解決辦法: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 *)!
謝謝你的回答。這會有效,但我們沒有任何我們可以使用的知名帳戶 - >政策 – AcidJunkie
@AcidJunkie查看我的更新回答 – rkosegi