我分发许可软件,并且有一个非常好的VBA方法来注册和识别注册的PC是唯一的。我使用主板ID +处理器ID + HD ID的组合(用于ID读取序列号)。到目前为止,在注册了1000多台设备之后,我还没有看到重复。
现在我需要将此VBA功能扩展到Apple Mac OSx环境。任何人都可以帮助我使用VBA代码从MAC机器上获取“数字”。显然PC代码不起作用。
答案 0 :(得分:0)
您可以使用此功能尝试机器序列号。它可以在 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 以查看)