UNPKG

registry-js

Version:

A simple and opinionated library for working with the Windows registry

64 lines (45 loc) 2.27 kB
# registry-js ## A simple and opinionated library for working with the Windows registry ## Goals * zero dependencies * faster than `reg.exe` * implement based on usage - don't replicate the registry API * leverage TypeScript declarations wherever possible **Note:** This is currently in preview, with support for features that GitHub Desktop and Atom require. ## Install ```shellsession $ npm install --save registry-js # or $ yarn add registry-js ``` ## But Why? The current set of libraries for interacting with the registry have some limitations that meant we couldn't use it in GitHub Desktop: * [`windows-registry`](https://www.npmjs.com/package/windows-registry) depends on `ffi` at runtime, which caused issues with webpack-ing, and was missing APIs we needed. * [`winreg`](https://www.npmjs.com/package/winreg) depends on `reg.exe` which breaks as soon as you enable "Prevent access to registry editing tools" Group Policy rules (yes, even `QUERY` operations are caught by this). More details about this can be found in [desktop/desktop#3105](https://github.com/desktop/desktop/issues/3105). After exploring other options like invoking PowerShell - which was too slow - we decided to write our own little library to do the stuff we require by invoking the Win32 APIs directly. ## Documentation See the documentation under the [`docs`](https://github.com/desktop/registry-js/tree/master/docs) folder. ## Supported versions Each release of `registry-js` includes prebuilt binaries for the versions of Node and Electron that are actively supported by these projects. Please refer to the release documentation for [Node](https://github.com/nodejs/Release) and [Electron](https://electronjs.org/docs/tutorial/support) to see what is supported currently. ## Contributing Read the [Setup](https://github.com/desktop/registry-js/blob/master/docs/index.md#setup) section to ensure your development environment is setup for what you need. This project isn't about implementing a 1-1 replication of the Windows registry API, but implementing just enough for whatever usages there are in the wild. If you want to see something supported, open an issue to start a discussion about it.