我分发许可软件并且有一个很好的 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/