What is winreg?
The winreg npm package is a Node.js library for accessing and manipulating the Windows Registry. It allows you to read, write, and delete registry keys and values, making it useful for applications that need to interact with the Windows operating system at a low level.
What are winreg's main functionalities?
Read a registry key
This feature allows you to read a value from a specified registry key. The code sample demonstrates how to read a value named 'MyValue' from the 'HKEY_CURRENT_USER\Software\MyApp' key.
const Winreg = require('winreg');
const regKey = new Winreg({
hive: Winreg.HKCU, // HKEY_CURRENT_USER
key: '\Software\MyApp'
});
regKey.get('MyValue', (err, item) => {
if (err) console.log('Error:', err);
else console.log('Value:', item.value);
});
Write a registry key
This feature allows you to write a value to a specified registry key. The code sample demonstrates how to set a string value named 'MyValue' with the data 'MyData' in the 'HKEY_CURRENT_USER\Software\MyApp' key.
const Winreg = require('winreg');
const regKey = new Winreg({
hive: Winreg.HKCU, // HKEY_CURRENT_USER
key: '\Software\MyApp'
});
regKey.set('MyValue', Winreg.REG_SZ, 'MyData', (err) => {
if (err) console.log('Error:', err);
else console.log('Value written successfully');
});
Delete a registry key
This feature allows you to delete a value from a specified registry key. The code sample demonstrates how to remove a value named 'MyValue' from the 'HKEY_CURRENT_USER\Software\MyApp' key.
const Winreg = require('winreg');
const regKey = new Winreg({
hive: Winreg.HKCU, // HKEY_CURRENT_USER
key: '\Software\MyApp'
});
regKey.remove('MyValue', (err) => {
if (err) console.log('Error:', err);
else console.log('Value removed successfully');
});
Other packages similar to winreg
windows-registry
The windows-registry package is another alternative for interacting with the Windows Registry from Node.js. It provides basic functionality for reading and writing registry keys and values. While it is similar to winreg, it may not be as feature-rich or actively maintained.
node-winreg
node module that provides access to the Windows Registry through the REG commandline tool
Installation
npm install winreg
Usage
Let's start with an example. The code below lists the autostart programs of the current user.
var Winreg = require('winreg')
, regKey = new Winreg({
hive: Winreg.HKCU,
key: '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'
})
regKey.values(function (err, items) {
if (err)
console.log('ERROR: '+err);
else
for (var i in items)
console.log('ITEM: '+items[i].name+'\t'+items[i].type+'\t'+items[i].value);
});
The following options are processed by the Winreg constructor:
- host the optional hostname, must start with the '\\' sequence
- hive the optional hive id (see below), the default is HKLM
- key the optional key, the default is th root key
The instances of Winreg provide access to a single registry key. The hive id can be one of the following:
- HKLM HKEY_LOCAL_MACHINE
- HKCU HKEY_CURRENT_USER
- HKCR HKEY_CLASSES_ROOT
- HKCC HKEY_CURRENT_CONFIG
- HKU HKEY_USERS
The key, if specified, has to start, but must not be terminated with a '\' character.
Registry values are returned as objects, containing the following information:
- host the hostname, if it has been set in the options
- hive the hive id, as specified in the options
- key the key, as specified in the options
- name the name of the registry value
- type one of the types listed below
- value a string containing the value
Registry values can have one of the following types:
- REG_SZ a string value
- REG_MULTI_SZ a multiline string value
- REG_EXPAND_SZ an expandable string value
- REG_DWORD a double word value (32 bit integer)
- REG_QWORD a quad word value (64 bit integer)
- REG_BINARY a binary value
- REG_NONE a value of unknown type
Following methods are provided by instances of Winreg:
Method | Parameters | Description |
---|
values | callback | list the values under this key |
get | name, callback | gets a value by it's name |
set | name, type, value, callback | sets a value |
remove | name, callback | remove the value with the given key |
create | callback | create this key |
erase | callback | remove this key |