add documentation for registerProtocolHandler

This commit is contained in:
Feross Aboukhadijeh
2016-03-19 20:29:44 -07:00
parent 765d3bde56
commit 29138fc83c

View File

@@ -1,9 +1,29 @@
module.exports = function () {
if (process.platform === 'win32') {
registerProtocolHandler('magnet', 'URL:BitTorrent Magnet URL', process.execPath)
registerProtocolHandler('magnet', 'BitTorrent Magnet URL', process.execPath)
}
}
/**
* To add a protocol handler on Windows, the following keys must be added to the Windows
* registry:
*
* HKEY_CLASSES_ROOT
* $PROTOCOL
* (Default) = "URL:$NAME"
* URL Protocol = ""
* shell
* open
* command
* (Default) = "$COMMAND" "%1"
*
* Source: https://msdn.microsoft.com/en-us/library/aa767914.aspx
*
* However, the "HKEY_CLASSES_ROOT" key can only be written by the Administrator user.
* So, we instead write to "HKEY_CURRENT_USER\Software\Classes", which is inherited by
* "HKEY_CLASSES_ROOT" anyway, and can be written by unprivileged users.
*/
function registerProtocolHandler (protocol, name, command) {
var Registry = require('winreg')
@@ -11,7 +31,7 @@ function registerProtocolHandler (protocol, name, command) {
hive: Registry.HKCU, // HKEY_CURRENT_USER
key: '\\Software\\Classes\\' + protocol
})
protocolKey.set('', Registry.REG_SZ, name, callback)
protocolKey.set('', Registry.REG_SZ, 'URL:' + name, callback)
protocolKey.set('URL Protocol', Registry.REG_SZ, '', callback)
var commandKey = new Registry({