Package Exports
- regedit-rs
 - regedit-rs/index.js
 
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (regedit-rs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
regedit-rs
A high-performance Windows registry toolkit inspired by node-regedit, powered by Rust with napi-rs It enables easy manipulation of the Windows registry with optimized performance.
Install
npm install regedit-rsExample
import { list, createKey, putValue, deleteKey, deleteValue, RegSzValue, RegDwordValue, RegExpandSzValue } from "regedit-rs";
async function main(){
    const keys = ["HKCU\\Software\\regedit-rs", "HKCU\\Software\\regedit-rs\\test"];
    const result = await list(keys);
    if(!result[keys[0]].exists){
        return;
    }
    const nameValue = result[keys[1]].values["name"].value;
    const newPath = new RegExpandSzValue(`%APPDATA%\\${nameValue}`);
    if(newPath.expandedValue !== "C:\\Users\\username\\AppData\\Roaming\\test name"){
        return;
    }
    await createKey("HKCU\\Software\\regedit-rs\\test");
    await putValue({
        "HKCU\\Software\\regedit-rs\\test": {
            "name": new RegSzValue("test name"),
            "number": new RegDwordValue(123),
            "path": newPath
        }
    });
    await deleteKey("HKCU\\Software\\regedit-rs\\old_test");
    await deleteValue({
        "HKCU\\Software\\regedit-rs\\test": ["name", "number", "path"]
    });
}
main();API
Every function are binded to Rust and support batching to improve performance.
Reading keys and values
List registry key(s) and value(s)
const res = await list(["HKCU\\SOFTWARE", "HKLM\\SOFTWARE", "HKCU\\DONT_EXIST"]);Result will be an object with the following structure:
{
    "HKCU\\SOFTWARE": {
        "exists": true,
        keys: ["HKCU\\SOFTWARE\\Microsoft", "HKCU\\SOFTWARE\\regedit-rs", ...],
        values: {
            szValue: [RegSzValue] // RegSzValue is a class with a value property
            dwordValue: [RegDwordValue] // RegDwordValue is a class with a value property
            expandSzValue: [RegExpandSzValue] // RegExpandSzValue is a class with a value and expandedValue property
        }
    },
    "HKLM\\SOFTWARE": {
        "exists": true,
        keys: ["HKLM\\SOFTWARE\\Microsoft", "HKLM\\SOFTWARE\\regedit-rs", ...],
        values: {
            szValue: [RegSzValue]
            dwordValue: [RegDwordValue]
            qwordValue: [RegQwordValue]
            expandSzValue: [RegExpandSzValue]
        }
    },
    "HKCU\\DONT_EXIST": {
        "exists": false,
        keys: [],
        values: {}
    }
}Creating keys
Create registry key(s) if not exists
await createKey("HKCU\\SOFTWARE\\regedit-rs\\test");
await createKey(["HKCU\\SOFTWARE\\regedit-rs\\test", "HKCU\\SOFTWARE\\regedit-rs\\test2"]);Putting values
Put or update registry value(s)
await putValue({
    "HKCU\\SOFTWARE\\regedit-rs\\test": {
        "name": new RegSzValue("test name"),
        "number": new RegDwordValue(123),
        "path": new RegExpandSzValue("%APPDATA%\\test name")
    }
});Deleting keys
Delete registry key(s) and all subkeys
await deleteKey("HKCU\\SOFTWARE\\regedit-rs\\test");
await deleteKey(["HKCU\\SOFTWARE\\regedit-rs\\test", "HKCU\\SOFTWARE\\regedit-rs\\test2"]);Deleting values
Delete registry value(s)
await deleteValue({
    "HKCU\\SOFTWARE\\regedit-rs\\test": ["name", "number", "path"]
});More
See all types, functions, and classes at index.d.ts
Sample Benchmark
npm run benchRunning "List keys and values of a registry key" suite...
Progress: 100%
  regedit-rs:
    3 162 ops/s, ±1.01%   | fastest
  regedit:
    18 ops/s, ±0.37%      | slowest, 99.43% slower
  winreg:
    33 ops/s, ±0.60%      | 98.96% slower
Finished 3 cases!
  Fastest: regedit-rs
  Slowest: regedit
Running "Create a registry key" suite...
Progress: 100%
  regedit-rs:
    116 548 ops/s, ±0.74%   | fastest
  regedit:
    22 ops/s, ±0.64%        | slowest, 99.98% slower
  winreg:
    43 ops/s, ±1.00%        | 99.96% slower
Finished 3 cases!
  Fastest: regedit-rs
  Slowest: regedit
Running "Put a registry value" suite...
Progress: 100%
  regedit-rs:
    59 015 ops/s, ±0.77%   | fastest
  regedit:
    22 ops/s, ±0.92%       | slowest, 99.96% slower
  winreg:
    43 ops/s, ±0.85%       | 99.93% slower
Finished 3 cases!
  Fastest: regedit-rs
  Slowest: regeditTest or Contributing
- Clone this repo
 - Install latest stable Rust
 - Install Node.js 10+
 - Install dependencies with 
npm install - Build bindings with 
npm run build - Run 
npm test 
Release package
We use GitHub actions to automatically publish npm packages.
# 1.0.0 => 1.0.1
npm version patch
# or 1.0.0 => 1.1.0
npm version minor