システム時刻の変更特権を持つアカウントを表示(C言語)
説明:
LsaEnumerateAccountsWithUserRightを使用して、“hogehoge”というマシンにおける、システム時刻の変更の特権を持つアカウントのリストを取得し、結果を表示する。
キーワード:
LsaOpenPolicy, LsaEnumerateAccountsWithUserRight, LsaLookupSids, LsaFreeMemory, LsaClose
サンプルコード:
void EnumSysTimeAccount(void)
{
LSA_HANDLE hPolicy;
LSA_OBJECT_ATTRIBUTES Attr;
SECURITY_QUALITY_OF_SERVICE Quality;
LPWSTR SystemName = L"hogehoge";
LSA_UNICODE_STRING LsaSystemName;
LSA_UNICODE_STRING UserRight;
PLSA_ENUMERATION_INFORMATION pEnumInfo;
ULONG InfoNum;
ULONG i;
WCHAR msg[1000];
/* 初期化 */
PLSA_REFERENCED_DOMAIN_LIST pDomainList;
PLSA_TRANSLATED_NAME pTransName;
UserRight.Buffer = SE_SYSTEMTIME_NAME;
UserRight.Length = lstrlen(SE_SYSTEMTIME_NAME) * sizeof(WCHAR);
UserRight.MaximumLength = (lstrlen(SE_SYSTEMTIME_NAME) + 1) * sizeof(WCHAR);
LsaSystemName.Buffer = SystemName;
LsaSystemName.Length = lstrlen(SystemName) * sizeof(WCHAR);
LsaSystemName.MaximumLength = (lstrlen(SystemName) + 1) * sizeof(WCHAR);
/* ポリシオブジェクトのオープン */
Attr.Length = sizeof(Attr);
Attr.RootDirectory = NULL;
Attr.ObjectName = NULL;
Attr.Attributes = 0;
Attr.SecurityDescriptor = NULL;
Attr.SecurityQualityOfService = &Quality;
Quality.Length = sizeof(Quality);
Quality.ImpersonationLevel = SecurityImpersonation;
Quality.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
Quality.EffectiveOnly = FALSE;
LsaOpenPolicy(
&LsaSystemName,
&Attr,
POLICY_VIEW_LOCAL_INFORMATION | POLICY_LOOKUP_NAMES,
&hPolicy);
/* システム時刻変更特権を持つアカウントの列挙 */
LsaEnumerateAccountsWithUserRight(
hPolicy,
&UserRight,
&pEnumInfo,
&InfoNum);
/* 取得結果のSIDをアカウント名に変更 */
LsaLookupSids(
hPolicy,
InfoNum,
(PSID *)pEnumInfo,
&pDomainList,
&pTransName);
/* アカウント名を表示 */
for(i=0; i<InfoNum; i++) {
lstrcpyn(msg, pTransName[i].Name.Buffer, pTransName[i].Name.Length / sizeof(WCHAR) + 1);
msg[pTransName[i].Name.Length / sizeof(WCHAR)] = '\0';
wprintf(L"%s\n", msg);
}
/* 後処理 */
LsaFreeMemory(pTransName);
LsaFreeMemory(pDomainList);
LsaFreeMemory(pEnumInfo);
LsaClose(hPolicy);
}
(original text:1999/05/25 更新)
本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。