更新于 

如何在Electron中读取Windows注册表并获取鼠标光标大小

介绍了如何使用regedit包在Electron中读取注册表

发现问题

在某些场景下,应用程序需要读取系统配置,例如当前用户的鼠标光标大小 这些信息存储在Windows注册表中,但直接访问和读取这些信息可能存在一些挑战

目录列表

  1. HKLM = HKEY_LOCAL_MACHINE:是机器软硬件信息的集散地
  2. HKCU = HKEY_CURRENT_USER:是当前用户所用信息储存地
  3. HKEY_CLASSES_ROOT:文件关联相关信息
  4. HKEY_USERS:所有用户信息
  5. HKEY_CURRENT_CONFIG:当前系统配置

解决方案

为了解决这个问题,我选择使用regedit包,这是一个用于Node.js环境下访问Windows注册表的工具 首先,需要在Electron项目中安装regedit

  1. 安装regedit

package.json文件中添加依赖:

1
2
3
"dependencies": {
"regedit": "3.0.0"
}

然后运行npm install命令安装依赖

  1. 读取注册表中的鼠标光标大小

以下是一个示例代码:

1
2
3
4
5
6
7
8
9
10
const regedit = require('regedit');
regedit.list(['HKCU\\Control Panel\\Cursors'])
.on('data', function(entry) {
let cursorSettings = entry.data.values
if (cursorSettings['CursorBaseSize']) {
console.log('CursorBaseSize: ' + cursorSettings['CursorBaseSize'].value)
} else {
console.log('CursorBaseSize not found in the registry')
}
})

例外场景

在实际使用过程中,可能会遇到一些例外情况,例如:

  • CursorBaseSize项在注册表中不存在
  • 读取注册表的过程中发生权限问题或其他错误

为了处理这些情况,可以在代码中添加错误处理和默认值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const regedit = require('regedit');

regedit.list(['HKCU\\Control Panel\\Cursors'])
.on('data', function(entry) {
try {
let cursorSettings = entry.data.values
if (cursorSettings['CursorBaseSize']) {
console.log('CursorBaseSize: ' + cursorSettings['CursorBaseSize'].value)
} else {
console.log('CursorBaseSize not found in the registry')
}
} catch (error) {
console.error('Error reading the registry: ', error)
}
})
.on('error', function(error) {
console.error('Error accessing the registry: ', error)
})

总结

通过使用regedit包,我可以在Electron应用中方便地读取Windows注册表中的信息【也可以查询注册表其他键值功能】