0
点赞
收藏
分享

微信扫一扫

electron 获取电脑mac地址遇到的坑

程序猿不脱发2 2022-04-04 阅读 44
前端

最近公司需求做一个exe程序,无奈只是一个小前端,只能使用electron来实现了

其中一个需求就是每个账号绑定唯一的电脑。

这里选用网卡的mac地址来做这个唯一的字段。

代码很简单 测试也很顺利 

const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true,
contextIsolation: false,
//enableRemoteModule:true,
}
})

preload.js

window.addEventListener('DOMContentLoaded', () => {
var os = require("os");
sessionStorage.mac = os.networkInterfaces().WLAN[0].mac
sessionStorage.name = os.hostname()
console.log(sessionStorage.getItem('mac'))
console.log(sessionStorage.getItem('name'))
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}

for (const type of ['chrome', 'node', 'electron']) {
replaceText(`${type}-version`, process.versions[type])
}
})

万万没想到 交付的时候发生无法获取mac的错误

最终更改成这个样子

window.addEventListener('DOMContentLoaded', () => {
var os = require("os");
if(os.networkInterfaces().WLAN){
sessionStorage.mac = os.networkInterfaces().WLAN[0].mac
}else{
sessionStorage.mac = os.networkInterfaces()['以太网'][0].mac
}
sessionStorage.name = os.hostname()
console.log(sessionStorage.getItem('mac'))
console.log(sessionStorage.getItem('name'))
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}

for (const type of ['chrome', 'node', 'electron']) {
replaceText(`${type}-version`, process.versions[type])
}
})

通过os.networkInterfaces()获取网卡地址的方法会遇到网线/无线上网这两种情况

个别情况下WLAN这个数组会是“以太网”

这三个大字困扰我半天。。。。还是太年轻啊

举报

相关推荐

0 条评论