Electron读取注册表

1,759 阅读1分钟

1.安装插件

npm i regedit

2.正常软件存放注册表路径:

//这里面的(S-1-5-21-2364185832-2597701064-117226805-1001)有可能不一样需要正则匹配后面1001拿到这个路径

计算机\HKEY_USERS\S-1-5-21-2364185832-2597701064-117226805-1001\Software\Microsoft\Windows\CurrentVersion\Uninstall

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

上面的路径是注册表完整路径,使用插件必须找到上面的第二个路径可以使用:

const regfolder1 = 'HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall';
const regfolder2 ='HKLM\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall';

3.使用插件regedit读取上面的路径 拿到当前文件夹在注册表完整路径

//这里面的key 就是你要读取的注册表路径 没有贴上完整代码 具体逻辑看看项目逻辑
regedit.list([key], function(err, result) {
                    const e = result[key];
                      if(e.values && JSON.stringify(e.values) != "{}" && e.values.DisplayName&& e.values.DisplayIcon) {
                        DisplayIcon = e.values.DisplayIcon.value.replace(/"/g,'');
                      if (/\,/.test(e.values.DisplayIcon.value)) {
                        //注册表里面路径有可能有额外的参数 需要过滤掉
                        if (!RegeditStartRoute.has(e.values.DisplayName.value)) {
                          RegeditStartRoute.set(e.values.DisplayName.value,DisplayIcon.split(",")[0]);
                        }
                      } else {
                        if (!RegeditStartRoute.has(e.values.DisplayName.value)) {
                          RegeditStartRoute.set(e.values.DisplayName.value,DisplayIcon);
                        }
                      }
                      if(index + 1 == regList.length) {
                        // console.log("RegeditStartRouteSize",RegeditStartRoute.size,RegeditStartRoute);
                        mainwin.webContents.send('onResult', RegeditStartRoute)
                      }
                    }
                  })

4.上面只是读取注册表的方法,可以自行修改逻辑

node读取的话对于低配置电脑会卡顿,所以还是需要c++去读取。