Node如何获取计算机名称

在使用Node.js开发客户端应用时,可能会有获取计算机名的需求,以区分用户的多个设备。

这里所说的计算机名称(ComputerName),也称为设备名称(DeviceName),用户可以自定义自己的设备名称。

在 Windows 系统中,在此电脑(计算机、我的电脑)图标上右键,选择属性可以找到。显示如下:

Windows7
Windows7

Windows10
Windows10

Windows11
Windows11

在 Mac 系统中,在“系统设置→共享”中可以看到,显示如下:

MacOS

新版的 Mac 系统把名称移到了“通用→关于本机”,“本地主机名”在“通用→共享”中:

MacOS 11 之后

背景介绍完毕,看一下 Node 如何获取设备名称。

在 Windows 中,我们可以通过 Node 内置的 os 模块中的 hostname() 方法来获取:

const os = require('os');

const hostname = os.hostname();

console.log(hostname);

如果是在 Mac 系统,使用 hostname() 方法获取计算机名称,你或许会得到:bogon,并不是用户设置的“名称”。

在 Mac 系统,可以借助执行 MacOS 中的 scutil 命令,在终端执行:

scutil --get ComputerName # 获取名称
scutil --get LocalHostName # 获取本地主机名

在 Node 当中,可以借助 child_process 执行 shell 命令:

const os = require('os');
const childProcess = require("child_process");

const computerName = childProcess.execSync('scutil --get ComputerName'); ## execSync 为同步方法,也可以使用 exec

console.log(computerName.toString());

当然,为了完成上述 Mac 和 Windows 的区分,我们可以使用 os.platform():

const os = require('os');
const platform = os.platform();

您的赞助将会支持作者创作及本站运维

发表评论


TOP