У меня есть файл манифеста с несколькими событиями и двумя каналами. Я создаю файл включения и ресурсов с помощью команды mc:
mc -um manifest.man
Я связываю файлы ресурсов с приложением.
Я устанавливаю манифест в систему с помощью команды wevtutil:
wevtutil.exe im manifest.man
В приложении я использую EventRegister для журнала инициализации и EventWrite для записи журнала. Следующий код для генерации события журнала возвращает ERROR_SUCCESS: EVENT_DATA_DESCRIPTOR data;
ULONG writeEvent(const std::string& message){
std::string log_message_str( message );
EVENT_DATA_DESCRIPTOR data;
EVENT_DESCRIPTOR description;
EventDataDescCreate( &data, message.c_str(), static_cast<ULONG>(log_message_str.size() + 1) );
return EventWrite(log_handle, &description, 1, &data);
}
Кроме того, я предоставляю разрешения на чтение для моего приложения для LocalService:
icacls "service_win.exe" /grant "NT AUTHORITY\LocalService":R /Q
Я запускаю свое приложение, такое как службас учетной записью NT AUTHORITY \ LocalService:
sc.exe create service_win binpath=D:\service_win.exe type=own obj='NT AUTHORITY\LocalService'
net start service_win
Каналы, объявленные в моем manifest.man, добавлены в журнал WinEvents, но пусты. В приложении я пишу в журнал через writeEvent каждую секунду с результатом ERROR_SUCCESS, но мои файлы журналов все еще пусты.
ОБНОВЛЕНИЕ:
Я создаю githubрепо с шагами для воспроизведения