共用方式為


管理原則資訊

LSA 提供功能,系統管理員可用來查詢及設定本機計算機和網域的全域原則資訊。

在管理原則資訊之前,應用程式必須取得本機 原則 物件的控制代碼,如 開啟原則物件控制代碼所示。 管理原則資訊的函式需要此控制代碼。

若要取得本機安全策略的相關資訊,請呼叫 LsaQueryInformationPolicy。 若要設定本機安全策略,請呼叫 LsaSetInformationPolicy POLICY_INFORMATION_CLASS 列舉的描述會詳細說明可以查詢或設定的原則信息類型。

下列範例示範如何取得系統的帳戶網域資訊,針對系統的 策略 物件給定處理代碼。

#include <windows.h>

BOOL GetAccountDomainInfo(LSA_HANDLE PolicyHandle)
{
  NTSTATUS ntsResult = STATUS_SUCCESS;
  PPOLICY_ACCOUNT_DOMAIN_INFO pPADInfo = NULL;
  PWCHAR name = NULL;
  UINT nameSize;
  
  ntsResult = LsaQueryInformationPolicy(
    PolicyHandle,                   // Open handle to a Policy object.
    PolicyAccountDomainInformation, // The information to get.
    (PVOID *)&pPADInfo              // Storage for the information.
  );

  if (ntsResult == STATUS_SUCCESS)
  {  
    // There is no guarantee that the LSA_UNICODE_STRING buffer
    // is null-terminated, so copy the name to a buffer that is.
    nameSize =  pPADInfo->DomainName.Length + 1 * sizeof(WCHAR);
    name = (WCHAR *) LocalAlloc(LPTR, nameSize);
    if (!name)
    {
        wprintf(L"Failed LocalAlloc\n");
        exit(1);
    }
    wcsncpy_s(name, nameSize, pPADInfo->DomainName.Buffer,
        pPADInfo->DomainName.Length);
    wprintf(L"The account domain name is %ws\n", name);
    LocalFree(name);
    if (STATUS_SUCCESS != LsaFreeMemory(pPADInfo))
        wprintf(L"LsaFreeMemory error\n");
  }
  else
  {
    // Show the corresponding win32 error code.
    wprintf(
        L"Error obtaining account domain information - (win32) %lu\n",
        LsaNtStatusToWinError(ntsResult));
  }

  return !ntsResult;
}