macos - 获取Apple Mac系统的唯一机器号

标签 macos excel vba

我分发许可软件并且有一个很好的 VBA 方法来注册和识别注册的 PC 是唯一的。我使用主板 ID + 处理器 ID + HD ID 的组合(对于 ID,也读取序列号)。到目前为止,在注册了 1000 多台设备后,我还没有看到重复的设备。

现在我需要将此 VBA 功能扩展到 Apple Mac OSx 环境。任何人都可以帮助我使用 VBA 代码从该机器独有的 MAC 获取“数字”。显然 PC 代码不起作用。

最佳答案

您可以使用此功能尝试机器序列号。它可以在 Mac 或 PC 上运行

Function GetPCSerialNumber()
'   V1.1
#If Mac Then
    Dim PCSerialNumber, StrOffset
    PCSerialNumber = MacScript("do shell script ""ioreg -l | grep IOPlatformSerialNumber""")
    StrOffset = InStr(PCSerialNumber, " = """)
    PCSerialNumber = Mid(PCSerialNumber, StrOffset + 4, 999)
    GetPCSerialNumber = "{Mac}" & Left(PCSerialNumber, Len(PCSerialNumber) - 1)
#Else
'   wmic bios get * /format:list
    Dim objWMIService As Object
    Dim colItems As Variant
    Dim objItem
    Dim strMsg As String

    Set objWMIService = GetObject("winmgmts://./root/cimv2")

    Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS where PrimaryBIOS = true", , 48)

    For Each objItem In colItems
        strMsg = objItem.SerialNumber
    Next

    GetPCSerialNumber = strMsg
#End If

您还可以使用 Excel 自己的函数 [在 VBA 中] ENVIRON(),来获取 [PC] 环境变量的值,例如ENVIRON("USERNAME") 或 ENVIRON("COMPUTERNAME"),您可以通过创建另一个函数 GETENVIRON() 在 Excel 中访问它:

Function GetEnviron(ByVal EnvironmentVariableName As String)
'   V1.1
    GetEnviron = Environ(EnvironmentVariableName)
End Function

请注意,在 Mac 上,PC 的 USERNAME 环境变量相当于 USER 或 LOGNAME。

在 Mac 上使用的环境变量要少得多(在终端窗口中尝试 ENV 看看)

关于macos - 获取Apple Mac系统的唯一机器号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44366353/

相关文章:

c++ - 关于创建 StaticLib 的格式错误的存档目录条目

excel - 强制 Excel 2007 将列中的所有值视为文本

带 Excel VBA 的 MySQL ODBC 连接器 - 无法删除记录

excel - 我可以将 VBA 模块作为参数传递给子/函数吗?

excel - Excel VBA 中引用自身的复选框

macos - 10.12 Sierra 上的代码设计失败

python - Amazon Elastic Beanstalk 在运行任何命令时不断要求提供凭证

python-3.x - 在MacOS上安装virtualenv和virtualenvwrapper

Excel VBA查找方法将搜索框 "Within"从工作簿重置为工作表

excel - VBA 宏 : Exporting Visio Shape Report into New Excel File, 然后创建数据透视表