Skip to content
This repository has been archived by the owner on Jun 23, 2023. It is now read-only.

RainwayApp/warden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Warden.NET

What Is It?

Warden.NET is a simple to use library for managing processes and their states.

Why?

With Rainway we're tasked with launching thousands of different applications from various third parties. To ensure launching games was a smooth process for the user, we needed a reliable way to keep track of game states.

The System.Diagnostics.Process class, while useful, does not have a concept for parent applications; In contrast, Windows itself tracks parents; however, it does not track grandparents, and processes can quickly become orphaned. Process.EnableRaisingEvents while useful, does not support monitoring URI-based launches' lifetime, processes with higher privileges than the calling application, or processes different sessions.

That is why we built Warden.NET.

Getting Started

As of Warden.NET 6.0.0 the calling application is no longer required to be running as Administrator. Some processes may be inaccessible however without those privileges.

Installing

Via Nuget

Install-Package Warden.NET

Enable Process Tracking

To initialize Warden to track processes you launch through it you must first call SystemProcessMonitor.Start(new MonitorOptions()); in the entry point of your application.

If you wish you can optionally subscribe to receive events when all untracked processes have started and stopped execution.

SystemProcessMonitor.OnProcessStarted += (sender, info) => Console.WriteLine(info);
SystemProcessMonitor.OnProcessStopped += (sender, info) => Console.WriteLine(info);

Launching a Process

The WardenProcess class allows you to start processes on the current machine in various context. It supports:

  • Using the operating system shell to start the process.
  • Creating a process as the current interactive user.
  • Launching a Microsoft Store / Universal Windows Platform app.

All of these methods support exit events and process family tree tracking. For more information please review the in-line documentation.

Impersonation

Warden supplies a built-in class, WardenImpersonator, that helps processes created by WardenProcess.StartAsUser execute code as the interactive user.

Notes

If you'd like to contribute we'll be happy to accept pull request. You can find a full example application in the repository.

About

Warden.NET is an easy to use process management library for keeping track of processes on Windows.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages