Windows — невозможно установить доступ к объекту аудита в локальной политике безопасности с использованием переполнения стека

Я использую следующий код, чтобы включить доступ к объекту аудита для успеха, сбой в локальной политике безопасности.

bool EnableObjectAccessPolicy()
{
NTSTATUS ntsResult;
LSA_HANDLE PolicyHandle = GetPolicyHandle();
DebugLogMessage("\n%x",PolicyHandle);
PPOLICY_AUDIT_EVENTS_INFO ppPAUDInfo = NULL;

ntsResult = LsaQueryInformationPolicy(PolicyHandle,PolicyAuditEventsInformation,(PVOID *)&ppPAUDInfo);
DebugLogMessage("\n-----%x",ntsResult);
if(ntsResult != STATUS_SUCCESS)
{
DebugLogMessage("LsaSetInformationPolicy returned %lu\n ntstatus %04x",LsaNtStatusToWinError(ntsResult),ntsResult);
LsaFreeMemory(PolicyHandle);
return FALSE;
}
DebugLogMessage("\nMaxCount is %d",ppPAUDInfo->MaximumAuditEventCount);
DebugLogMessage("\nEventAuditingOptions at 0 is %d",ppPAUDInfo->EventAuditingOptions[0]);
if(ppPAUDInfo->EventAuditingOptions[2] != 3)
{
DebugLogMessage("\nNot equal to 3");
ppPAUDInfo->EventAuditingOptions[2] = 3;
ntsResult = LsaSetInformationPolicy(PolicyHandle,PolicyAuditEventsInformation,ppPAUDInfo);
printf("ntstatus is %04x",ntsResult);
if(ntsResult != STATUS_SUCCESS)
{
DebugLogMessage("LsaSetInformationPolicy returned %lu\n ntstatus %04x",LsaNtStatusToWinError(ntsResult),ntsResult);
LsaFreeMemory(PolicyHandle);
return FALSE;
}
}
LsaClose(PolicyHandle);
return TRUE;
}

LSA_HANDLE GetPolicyHandle()
{

LSA_OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS ntsResult;
LSA_HANDLE lsahPolicyHandle;

// Object attributes are reserved, so initialize to zeros.
ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));

// Get a handle to the Policy object.
ntsResult = LsaOpenPolicy(
NULL,    //Name of the target system.  &lusSystemName,
&ObjectAttributes, //Object attributes.
POLICY_VIEW_LOCAL_INFORMATION | GENERIC_READ | GENERIC_EXECUTE | POLICY_ALL_ACCESS, //Desired access permissions.
&lsahPolicyHandle  //Receives the policy handle.
);
DebugLogMessage("\nOpenPolicy returned %x\n",LsaNtStatusToWinError(ntsResult));

if (ntsResult != STATUS_SUCCESS)
{
// An error occurred. Display it as a win32 error code.
DebugLogMessage("\nOpenPolicy returned %lu\n",LsaNtStatusToWinError(ntsResult));
return NULL;
}
DebugLogMessage("Policy Handle is \n%x",lsahPolicyHandle);

return lsahPolicyHandle;
}

приведенный выше код отлично работает, когда я делаю автономный EXE и тестировать. Но как только я интегрирую приведенный выше код с моим основным проектом ppPAUDInfo->MaximumAuditEventCount дает шестизначное число, которое должно быть 9. И мой основной процесс проекта завершается, как только я пытаюсь получить доступ ppPAUDInfo->EventAuditingOptions[index],

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]