A Windows process explorer built with WPF on .NET 10: live process list with low-overhead diffing, per-process detail enrichment (path/bitness via native APIs), priority management, settings, and data export (Excel/CSV/JSON/XML/TXT). English and Polish UI.
src/
TaskManager/ WPF application: views, view models, presentation state
(ProcessListCatalog), window orchestration (IWindowService),
app services, localization
TaskManager.Domain/ UI-free core: process snapshots/diff engine, enrichment,
OS process operations, exporters, settings model
tests/
TaskManager.UnitTests/ fast, hermetic test suite (default `dotnet test` target)
TaskManager.IntegrationTests/ tests against live system state; run explicitly
Dependency rule: only the WPF exe references WPF. Domain depends on the BCL plus NtApiDotNet and ClosedXML.
Requires the .NET SDK pinned in global.json.
dotnet build TaskManager.slnx
dotnet run --project src/TaskManagerdotnet test tests/TaskManager.UnitTests # hermetic suite
dotnet test tests/TaskManager.IntegrationTests # touches real system stateLogs go to %LOCALAPPDATA%\TaskManager\logs\tm-yyyyMMdd.log (7-day retention). Writing is
asynchronous: entries pass through a bounded in-memory buffer persisted by a background
writer; under extreme burst pressure the oldest buffered entries are dropped (one warning
line notes each such episode). Pending entries are flushed on normal application exit.
Conventions for new code:
| Level | Use for |
|---|---|
| Debug | hot-path detail (refresh ticks, per-PID operations); guard expensive arguments with IsEnabled |
| Information | lifecycle milestones and batch outcomes |
| Warning | recovered failures with context |
| Error / Critical | failures needing attention; terminal handlers |
- Message templates are static literals with named PascalCase placeholders (
{Pid},{ElapsedMs}) — never interpolate values into the string. - Pass exceptions via the dedicated argument (
_logger.LogWarning(ex, "...")), not as placeholders. - Categories come from
ILogger<T>of the owning type. - LoggerMessage source generation (CA1848) is deliberately deferred.
This application can interact with and manage Windows processes, including changing process priorities and terminating processes. Terminating or modifying system-critical processes may cause application failures, data loss, system instability, or other unintended behavior.
Use these features with appropriate caution. The author is not responsible for damage, data loss, system instability, or other consequences resulting from the use or misuse of this software.