Vestigium.Helpers.Services 1.0.0

dotnet add package Vestigium.Helpers.Services --version 1.0.0
                    
NuGet\Install-Package Vestigium.Helpers.Services -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Vestigium.Helpers.Services" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Vestigium.Helpers.Services" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Vestigium.Helpers.Services" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Vestigium.Helpers.Services --version 1.0.0
                    
#r "nuget: Vestigium.Helpers.Services, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Vestigium.Helpers.Services@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Vestigium.Helpers.Services&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Vestigium.Helpers.Services&version=1.0.0
                    
Install as a Cake Tool

Vestigium.Helpers.Services

Windows Service Control Manager: list, search, control, logon, recovery, watch, campaigns. Kql queries use KqlPack.Service. This package owns the SCM rows.

TFM is net10.0-windows.

Identity

Field Value
Package Vestigium.Helpers.Services 1.0.0
TFM net10.0-windows
APPID Services (ServicesCatalog.AppId)
EVENTID Reserved 15500–15999 (used through 15525)
Depends on Kql, Processes, System.ServiceProcess.ServiceController 9.0.8
License MIT
Contract 002 -- Requirements Document

Consume

<PackageReference Include="Vestigium.Helpers.Services" Version="1.0.0" />
using Vestigium.Helpers.Services;

var rows = ServiceHelper.List();
var one  = ServiceHelper.Get("EventLog");
var hits = ServiceHelper.Search("sql", ServiceSearchMode.Contains);
var kql  = ServiceHelper.Search("Name LIKE 'sql%'");

Surface

Call Returns Notes
List / ListHidden / Get / TryGet rows Missing name is null / false.
Search(term, mode) / Search(query) rows Cap 256.
GetDependsOn / GetDependedBy / GetDependencyTree tree Cap 256 unique names.
Start / Stop / Restart / Pause / Continue ServiceControlResult Does not throw on Access Denied.
SetStartType / SetLogon / SetRecovery result Protected names refuse these.
Watch / WatchQuery watcher Interval 250 ms–60 s.
CreateCampaign / LoadCampaign campaign In-process. Samples under ProgramData.
ServicesCatalog.Register(cfg) void Host-only, during VestigiumLogger.Initialize.

ProtectedNames cannot be Stopped, Restarted, or have StartType / Logon / Recovery changed. EventLog is on that list.

Rules that do not move

  • Windows only.
  • Control returns a result. Access Denied is not an exception.
  • Confirm on destructive calls. Confirm does not override ProtectedNames.
  • Never log the account password. ServiceInfo has no password field. JSONL writes password=***.
  • Campaigns need the host process to stay running.
  • The library never calls VestigiumLogger.Initialize.

Logging

VestigiumLogger.Initialize(cfg =>
{
    cfg.AppId = "PingIQ";                       // host APPID, not Services
    cfg.LogDirectory = logDir;
    ServicesCatalog.Register(cfg);
});

Writes are no-ops until the host initializes. JSONL lands at %ProgramData%\Vestigium\Logs\{host-APPID}\.

Named events live in EventCatalog/services.json.

Filter dialect: Vestigium.Helpers.Kql. Process join: Vestigium.Helpers.Processes.

Long-form documents live in Vestigium.Documentation / Helpers / Services. Folders, not files — current revision sits inside the folder.

Area GitHub
000 -- Archived folder
001 -- Implementation Plan folder
002 -- Requirements Document folder
003 -- Design Document folder
004 -- Developers Guide folder
Product Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 87 10/16/2026