RegJump 2.0.0
dotnet add package RegJump --version 2.0.0
NuGet\Install-Package RegJump -Version 2.0.0
<PackageReference Include="RegJump" Version="2.0.0" />
<PackageVersion Include="RegJump" Version="2.0.0" />
<PackageReference Include="RegJump" />
paket add RegJump --version 2.0.0
#r "nuget: RegJump, 2.0.0"
#:package RegJump@2.0.0
#addin nuget:?package=RegJump&version=2.0.0
#tool nuget:?package=RegJump&version=2.0.0
RegJump
A lightweight Windows library that opens the Windows Registry Editor directly at a specified registry key path.
Features
- Open the registry at any path with a single method call
- Optional elevation via UAC (
elevated) or suppressed UAC prompt - Returns the
Processhandle of the launched Registry Editor - Accepts hive abbreviations, full hive names, forward slashes, and paths copied straight from the Registry Editor address bar
- Validates the path up front and throws instead of silently opening the wrong location
Requirements
- Windows (Windows-only library)
- .NET Standard 2.0 or higher (compatible with .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5+)
Installation
Install via the .NET CLI:
dotnet add package RegJump
Usage
Open Registry Editor at a specific path
// Open regedit at a specific key (no elevation)
RegJump.Open(@"HKCU\Software\Microsoft\Windows\CurrentVersion");
// Using full hive name
RegJump.Open(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services");
Open Registry Editor with elevated privileges
// Opens regedit via UAC prompt
RegJump.Open(@"HKLM\SYSTEM\CurrentControlSet\Control", elevated: true);
Open Registry Editor without navigating to a path
// Just opens regedit at its last visited location
RegJump.Open();
// With elevation
RegJump.Open(elevated: true);
Using the returned Process handle
using System.Diagnostics;
Process regedit = RegJump.Open(@"HKCU\Software\MyApp");
regedit.WaitForExit();
API Reference
RegJump.Open(string path, bool elevated = false)
Opens the Windows Registry Editor and navigates to path.
| Parameter | Type | Description |
|---|---|---|
path |
string |
Registry path in the format HIVE\SubKey\Path |
elevated |
bool |
true to request elevation via UAC; false (default) to run as the current user without a UAC prompt |
Returns: Process — the started Registry Editor process.
Throws:
| Exception | When |
|---|---|
ArgumentNullException |
path is null |
ArgumentException |
path is empty or does not start with a recognised registry hive |
RegJump.OpenAt(string path, bool elevated = false)
Deprecated alias for Open(string path, bool elevated). Identical behaviour; marked [Obsolete] and slated for
removal in a future major version. Use Open instead.
RegJump.Open(bool elevated = false)
Opens the Windows Registry Editor at its last visited location.
| Parameter | Type | Description |
|---|---|---|
elevated |
bool |
true to request elevation via UAC; false (default) to run as the current user without a UAC prompt |
Returns: Process — the started Registry Editor process.
Supported hive prefixes
| Abbreviation | Full name |
|---|---|
HKLM |
HKEY_LOCAL_MACHINE |
HKCU |
HKEY_CURRENT_USER |
HKCR |
HKEY_CLASSES_ROOT |
HKU |
HKEY_USERS |
HKCC |
HKEY_CURRENT_CONFIG |
HKPD |
HKEY_PERFORMANCE_DATA |
Hive names are matched case-insensitively. Forward slashes are accepted as separators, surrounding quotes and
trailing separators are stripped, and an optional leading Computer\ is ignored — so a path copied from the
Registry Editor address bar can be passed through unchanged:
RegJump.Open(@"Computer\HKEY_CURRENT_USER\Control Panel\Cursors");
A path that is empty or does not begin with one of the hives above throws ArgumentException rather than
launching the Registry Editor at an arbitrary location.
How It Works
RegJump navigates the Registry Editor by writing the desired path to
HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey before launching regedit.exe — the same mechanism used by Sysinternals RegJump.
When elevated is false, regedit.exe is started directly with __COMPAT_LAYER=RUNASINVOKER in its environment to
suppress the automatic UAC elevation prompt, ensuring the editor opens in the current user context regardless of
manifest settings.
Notes
The Registry Editor is a single-instance application. If it is already running, launching it again simply focuses
the existing window, and that window does not re-read the stored path — so Open(path) will not re-navigate an
already open Registry Editor. Close it first if you need the jump to take effect.
Contributing
Contributions are welcome. Please open an issue first to discuss what you would like to change, then submit a pull request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'Add my feature') - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
Building and testing
dotnet test RegJump.Test/RegJump.Test.csproj
The integration tests really write LastKey and really start the Registry Editor. They restore the
value afterwards, but close the Registry Editor first — an instance that is already open rewrites
LastKey when it exits and would overwrite the restore. On non-Windows hosts they report as skipped.
License
This project is licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Win32.Registry (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.