EvtExportLog API сохраняет журнал событий удаленного компьютера в самом удаленном P C. Как я могу сохранить его на хосте P C? - PullRequest
0 голосов
/ 24 февраля 2020

Я использовал EvtOpenSession API для создания сеанса в журнале событий удаленного компьютера, затем использовал дескриптор сеанса для вызова EvtExportLog API. Мне нужен файл журнала событий на хосте P C (где я запускаю это приложение), но этот API создает дамп четного журнала на удаленной машине. Что я должен сделать, чтобы получить журнал событий на хосте P C?

Я также пытался использовать общий путь на хосте P C (вместо _T ("C: \ Test \ EventLogApplication) .evt ") Я использовал _T (" \\ ComputerName \ Events \ EventLogApplication.evt "). В этом случае я получаю сообщение об ошибке нарушения прав доступа.

Вот фрагмент кода, который я использовал

......

hRemote = EvtOpenSession(EvtRpcLogin, &Credentials, 0, 0);

if (hRemote)    
{

   if (!EvtExportLog(hRemote, _T("Application"), NULL,_T("C:\\Test\\EventLogApplication.evt"), EvtExportLogChannelPath))    
   {
       std::cout << "Error-Code : " << GetLastError() << std::endl;
   }

}

......

1 Ответ

0 голосов
/ 05 марта 2020

Насколько я знаю, EvtExportLog нельзя использовать для сохранения журнала событий удаленного компьютера на хост P C. Но для решения проблемы можно использовать обходной путь.

Поскольку это поведение разработано, поскольку все операции основаны на сервере RP C. Чтобы сохранить журналы событий на локальном сервере P C, мы можем создать общую папку на удаленном сервере P C, в которой будут сохраняться журналы удаленных событий.

См. Как создать общий файловый ресурс на удаленная система?

После сохранения журналов на удаленном сервере P C мы можем использовать CopyFile для копирования журналов на локальный сервер P C из общей папки на общей папке. удаленный P C.

Примечание: Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP : Свойства ресурса безопасности для существующего файла не копируются в новый файл до тех пор, пока Windows 8 и Windows Server 2012 не будут.

Атрибуты файла для существующего файла будут скопированы в новый файл. Например, если существующий файл имеет атрибут файла FILE_ATTRIBUTE_READONLY, копия, созданная посредством вызова CopyFile, также будет иметь атрибут файла FILE_ATTRIBUTE_READONLY. Для получения дополнительной информации см. Извлечение и изменение атрибутов файла.

Эта функция завершается ошибкой с ERROR_ACCESS_DENIED, если целевой файл уже существует и имеет установленный атрибут FILE_ATTRIBUTE_HIDDEN или FILE_ATTRIBUTE_READONLY.

Когда copyFile используется для копирования зашифрованный файл, он пытается зашифровать файл назначения с помощью ключей, используемых при шифровании исходного файла. Если это невозможно, эта функция пытается зашифровать файл назначения ключами по умолчанию. Если ни один из этих методов не может быть выполнен, CopyFile завершается ошибкой с кодом ошибки ERROR_ENCRYPTION_FAILED.

См .: https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-copyfile#remarks

Надеюсь помочь вам.

...