Windows Reporting Agent Documentation Live demo Downloads

Configuration

The agent reads windows_reporting_agent.ini next to windows_reporting_agent_svc.exe before every report, so changes take effect on the next cycle without a restart. Any setting left out uses its default.

Agent settings

SectionSettingDefaultMeaning
deliverymethodshttpsOne or more of https, cifs, scp, comma separated. Every listed method runs each cycle.
httpshostreports.example.comReport server
httpsport44380 when use_https=0
httpsupload_path/windows/upload/upload.phpWeb path of upload.php
httpsregister_path/windows/upload/register.phpWeb path of register.php
httpsuse_https10 for plain HTTP (test servers only)
httpsignore_cert_revocation1Skip the CRL/OCSP check, for networks that block CRL servers (WinINet error 12057)
httpsenrollment_token(empty)Token from the server's server.ini
cifsshare(empty)UNC path such as \\fileserver\reports
scphost / port / user / 22 / SSH server and account
scpkey_fileC:\ProgramData\WindowsReportAgent\id_ed25519Private key with no passphrase
scpremote_dir(empty)Directory on the SSH server
scpknown_hosts_fileC:\ProgramData\WindowsReportAgent\known_hostsHost keys for the server
scpstrict_host_key_checkingyesyes, or accept-new to save the host key on the first connection
scpscp_path%SystemRoot%\System32\OpenSSH\scp.exePath to scp.exe
scptimeout_seconds120Stop a hung transfer
agentreport_interval_minutes45Minutes between reports
agentreport_dirC:\ProgramData\WindowsReportAgentWhere the report is written before delivery
agentlog_fileC:\ProgramData\WindowsReportAgent\windows_report_agent.logResult of the last delivery
agentusers_dirC:\UsersFolder listed in the USERS section
agentevent_lookback_days30Days of Defender alerts to include
agentdata_dirC:\ProgramData\WindowsReportAgentAgent certificate and registration state

The installer writes the [https] settings from its wizard pages or command line switches. Edit the file as an administrator: it is in C:\Program Files.

File share delivery

[delivery]
methods=cifs

[cifs]
share=\\fileserver\reports

The service runs as LocalSystem, so on a domain it connects as the computer account (DOMAIN\HOSTNAME$). Give the computer accounts, or the Domain Computers group, write access to the share and folder. The report is written under a temporary name and renamed, so a reader never sees a partial file. File share and SCP deliveries do not use the certificate registration: the share permissions or the SSH key control access.

SCP delivery

Create a key with no passphrase for the agent, add the public key to the SSH account's authorized_keys, and limit the private key to SYSTEM and Administrators:

ssh-keygen -t ed25519 -N "" -f C:\ProgramData\WindowsReportAgent\id_ed25519
icacls C:\ProgramData\WindowsReportAgent\id_ed25519 /inheritance:r /grant SYSTEM:F /grant Administrators:F
ssh-keyscan reports.example.com > C:\ProgramData\WindowsReportAgent\known_hosts
[delivery]
methods=https,scp

[scp]
host=reports.example.com
user=winreports
remote_dir=/var/lib/windows_reporting_agent/reports

Server settings

server.ini is found through the WRA_SERVER_INI variable that install_server.sh sets in .htaccess, or at /etc/windows_reporting_agent/server.ini. Keep it out of the web root: it holds the enrollment token.

SectionSettingDefaultMeaning
pathsreports_dir/var/www/html/windows/reportsWhere accepted reports are saved
pathsdata_dir/var/lib/windows_reporting_agentRegistrations and replay protection data
registrationenrollment_token(empty)Shared secret the agents send when they register
registrationauto_approve_with_token11 approves an agent with the right token, 0 still needs an admin
uploadmax_upload_bytes2000000Largest report accepted
uploadmax_clock_skew_seconds300Largest clock difference allowed between agent and server
adminrequire_remote_user1admin.php, status.php and report.php only run behind web server authentication
statuslate_hours24A report older than this is late (warning)
statusmissing_days15A report older than this is missing (error)
statuspatch_max_age_days45Warn when the newest Windows update is older than this
statusrequired_apps(empty)Programs every computer must have, comma separated, * and ? wildcards
statusrequired_apps_skip_hosts(empty)Computers the required programs check skips, such as srv-*
statusunwanted_apps(empty)Programs no computer should have
statuspublic01 lets the status pages run without a login. Only for a demo with sample data.
statusreference_time(empty)Measure report ages from this epoch time, or fleet for the sample fleet's time