0.1.3 • Published 3 years ago
@kwruntime/win32reg v0.1.3
@kwruntime/win32reg
Utility for read/write Windows registry. Of course, can work on x86/x64 machines (and sure amr, no tested).
NO NATIVE DEPENDENCIES.
How works?
Works using @kwruntime/typedotnet, a library for interact with .NET Framework and .NET 6
In all Windows, .NET Framework is installed by default, so this library should work out the box.
Getting started.
NOTE: version 0.1.1 was broken. Doesn't use
import {registry} from "@kwruntime/win32reg"
// or 
const {registry} = require("@kwruntime/win32reg")
async function main(){
    
    await registry.createKeys(['HKLM\\SOFTWARE\\MyApp', 'HKCU\\SOFTWARE\\Foo'])
    // all stuff 
    ...
    
}or if you prefer for example, select the runtime to use:
import {Registry} from "@kwruntime/win32reg"
// or 
const {Registry} = require("@kwruntime/win32reg")
async function main(){
    
    let registry = new Registry()
    await registry.start("netframework") // or netframework
    await registry.createKeys(['HKLM\\SOFTWARE\\MyApp', 'HKCU\\SOFTWARE\\Foo'])
    // all stuff 
    ...
    
    // call after all operations
    registry.close()
}if you use @kwruntime/core you can import directly from URL:
// replace 0.1.0 with version or Git tag you want use:
import {Registry, registry} from "github://kwruntime/win32reg@0.1.0/src/mod.ts"This library usage is based on regedit, but internally using a method completely different. Doesn't need cscript or vbscript, and not start a new process on each action. 
async function main(){
    const reg = new Registry()
    await reg.start() 
    try{
        await reg.putValues({
            'HKCU\\SOFTWARE\\MyApp': {
                // default values are empty keys
                '': {
                    value: 'Default value',
                    type: 'REG_SZ'
                },
                'Company': {
                    value: 'Moo corp',
                    type: 'REG_SZ'
                },
                'Version': { ... }
            },
            'HKLM\\SOFTWARE\\MyApp2': { ... }
        })
        await reg.createKeys(['HKLM\\SOFTWARE\\MyApp', 'HKCU\\SOFTWARE\\Foo'])
        await reg.list(["HKLM\\SOFTWARE\\MyApp"])
    }catch(e){
        console.error("Caught errors:", e)
    }
    finally{
        reg.close()
    }
}or using RegItem style: 
async function main(){
    const reg = new Registry()
    await reg.start() 
    try{
        let key = await reg.localMachine.openSubKey("SOFTWARE\\MyApp")
        // created if required
        await key.create()
        let values = await key.getAllValues()
        
        await key.dispose()
    }catch(e){
        console.error("Caught errors:", e)
    }
    finally{
        reg.close()
    }
}API Reference:
Build this module
kwrun build