如何在Windows系统下用Node.js判断当前网络为有线还是无线?
在Windows系统的Electron应用中判断网络连接类型(有线/无线)
在Windows环境下,你可以通过调用系统命令结合Electron的child_process模块来判断当前网络连接是有线还是无线,以下是两种可行方案:
方案1:使用PowerShell命令(推荐,适配新版Windows)
Windows的Get-NetAdapter命令可获取网卡详细信息,其中InterfaceType字段的数值对应不同网络类型:
- 6:以太网(有线连接)
- 71:无线局域网(Wi-Fi)
在Electron主进程中执行该命令并解析结果的代码示例:
const { exec } = require('child_process'); function getNetworkConnectionType() { return new Promise((resolve, reject) => { // 执行PowerShell命令,筛选启用状态的网卡并获取接口类型 const psCommand = `powershell -Command "Get-NetAdapter | Where-Object { $_.Status -eq 'Up' } | Select-Object -ExpandProperty InterfaceType"`; exec(psCommand, (error, stdout, stderr) => { if (error) { reject(new Error(`执行命令失败:${stderr}`)); return; } // 解析输出的接口类型数值 const interfaceTypes = stdout.trim().split('\n').map(type => parseInt(type.trim(), 10)).filter(Boolean); // 判断连接类型 if (interfaceTypes.includes(71)) { resolve('wireless'); // 存在无线连接 } else if (interfaceTypes.includes(6)) { resolve('wired'); // 存在有线连接 } else { resolve('unknown'); // 无法识别的类型 } }); }); } // 调用示例 getNetworkConnectionType() .then(type => console.log(`当前网络类型:${type}`)) .catch(err => console.error(err.message));
方案2:使用WMIC命令(兼容旧版Windows)
WMIC是Windows旧版命令行管理工具,也可查询网卡类型:
const { exec } = require('child_process'); function getNetworkTypeViaWmic() { return new Promise((resolve, reject) => { const wmicCommand = `wmic nic where "NetEnabled='True'" get AdapterType`; exec(wmicCommand, (error, stdout, stderr) => { if (error) { reject(new Error(`执行命令失败:${stderr}`)); return; } const output = stdout.trim(); if (output.includes('802.11')) { resolve('wireless'); } else if (output.includes('Ethernet')) { resolve('wired'); } else { resolve('unknown'); } }); }); }
注意:WMIC在Windows 10 21H1及以后版本已被标记为弃用,优先推荐方案1。
注意事项
- 若Electron应用打包后出现权限问题,可尝试以管理员身份运行应用(一般查询网卡信息无需管理员权限)。
- 当同时存在有线和无线连接时,上述代码优先识别无线连接,可根据需求调整判断逻辑。
内容的提问来源于stack exchange,提问作者Pedro Henrique
相关产品推荐
相关产品推荐

