Const ADDIN_NAME As String = "AddInFunction"
Const SETTING_ITEM As String = "AddInSetting"
Const KEY_NAME As String = "RegisterCpu"
Sub TestRegister()
Debug.Print IsRegistered
End Sub
Public Function IsRegistered() As Boolean
Dim CpuID As String
Dim RegisterInfo As String
Dim Rng As Range, RngInfo As String
RegisterInfo = Get_Settings
If RegisterInfo <> "" Then
If HasRegisterSheet Then
Set Rng = ThisWorkbook.Worksheets("Register").Range("IV65536")
RngInfo = Rng.Text
If Len(RngInfo) > 0 Then
If RngInfo = RegisterInfo Then
'校验成功
IsRegistered = True
Else
IsRegistered = False
End If
Else
IsRegistered = False
End If
Else
IsRegistered = False
End If
Else
If HasRegisterSheet Then
Set Rng = ThisWorkbook.Worksheets("Register").Range("IV65536")
RngInfo = Rng.Text
If Len(RngInfo) > 0 Then
IsRegistered = False
Else
'首次注册,写入注册表
CpuID = Get_CpuId
Rng.Value = "'" & CpuID
Save_Settings CpuID
IsRegistered = True
End If
Else
IsRegistered = False
End If
End If
Set Rng = Nothing
End Function
Private Function Get_Settings() As String
Get_Settings = GetSetting(ADDIN_NAME, SETTING_ITEM, KEY_NAME)
End Function
Private Function Save_Settings(ByVal RegInfo As String)
SaveSetting ADDIN_NAME, SETTING_ITEM, KEY_NAME, RegInfo
End Function
Private Function Get_CpuId() As String
Dim CpuSet
Dim OneCpu
Set CpuSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Processor")
For Each OneCpu In CpuSet
Get_CpuId = OneCpu.ProcessorId
Next
End Function
Private Function HasRegisterSheet(Optional SheetName As String = "Register") As Boolean
Dim HasRegSht As Boolean
Dim Sht As Worksheet
HasRegisterSheet = False
For Each Sht In ThisWorkbook.Worksheets
If Sht.Name = SheetName Then
HasRegisterSheet = True
Exit For
End If
Next Sht
End Function