管理信任的網域資訊
LSA 原則提供數個函式,可讓您用來建立、列舉和刪除信任的網域,以及設定和擷取信任的網域資訊。
您必須先取得 原則 物件的控制碼,才能管理受信任的網域資訊,如 開啟原則物件控制碼中所述。
您可以呼叫 LsaEnumerateTrustedDomainsEx來列舉信任的網域。
若要擷取信任網域的相關資訊,請呼叫 LsaQueryTrustedDomainInfo 或 LsaQueryTrustedDomainInfoByName。 這兩個函式都會傳回相同的資訊;不過, LsaQueryTrustedDomainInfo 會依 SID 識別信任的網域, 而 LsaQueryTrustedDomainInfoByName 會依名稱識別信任的網域。
若要設定信任網域的資訊,請呼叫 LsaSetTrustedDomainInformation 或 LsaSetTrustedDomainInfoByName。 如同查詢函式, LsaSetTrustedDomainInformation 會依 SID 識別信任的網域,而 LsaSetTrustedDomainInfoByName 會依名稱識別受信任的網域。
您的應用程式可以藉由呼叫 LsaDeleteTrustedDomain來撤銷信任網域的信任關係。
下列範例會列舉本機系統的信任網域。
#include <windows.h>
void EnumerateTrusts(LSA_HANDLE PolicyHandle)
{
LSA_ENUMERATION_HANDLE hEnum=0;
PLSA_TRUST_INFORMATION TrustInfo = NULL;
ULONG ulReturned = 0;
NTSTATUS Status = 0;
ULONG i;
WCHAR StringBuffer[256];
// Enumerate the trusted domains until there are no more to return.
do
{
Status = LsaEnumerateTrustedDomains(
PolicyHandle, // an open policy handle
&hEnum, // enumeration tracker
(PVOID*)&TrustInfo, // buffer to receive data
32000, // recommended buffer size
&ulReturned // number of items returned in TrustInfo
);
// Check the return status for errors.
if((Status != STATUS_SUCCESS) &&
(Status != STATUS_MORE_ENTRIES) &&
(Status != STATUS_NO_MORE_ENTRIES))
{
// Handle the error.
wprintf(L"Error occurred enumerating domains %lu\n",
LsaNtStatusToWinError(Status));
return;
}
wprintf(L"Status %lu\n", LsaNtStatusToWinError(Status));
// Process the trusted domain information.
for (i=0;i<ulReturned; i++)
{
// LSA_Unicode strings might not be null-terminated.
if(TrustInfo[i].Name.Length < 256)
{
wcsncpy_s(StringBuffer,
256,
TrustInfo[i].Name.Buffer,
TrustInfo[i].Name.Length
);
// Guarantee that StringBuffer is null-terminated.
StringBuffer[TrustInfo[i].Name.Length] = NULL;
}
else
{
fprintf(stderr, "Name too long for string buffer.\n");
exit(1);
}
wprintf(L"Enum Trusted Domain - %ws ", StringBuffer);
}
// Free the buffer.
if (TrustInfo != NULL)
{
LsaFreeMemory(TrustInfo);
TrustInfo = NULL;
}
} while (Status != STATUS_NO_MORE_ENTRIES);
return;
}