Protect excel Of the method vba hard drive serial number

前端 未结 1 1659

my vba code is

Public Function notHDD()

Dim m As String
Const test = "WD-WX22AAAAAA"

m = GetHDD

If m <> test Then
    notHDD = True
Else
           


        
相关标签:
1条回答
  • 2020-12-22 13:53

    Run this script in a DOS prompt cscript -nologo WMIC_DiskDrive.vbs. Does it print out disk serial numbers (it should)? Similar code should work in Excel VBA script macros.

    ' Look disks
    ' cscript -nologo scriptname.vbs
    Option Explicit
    
    Dim StdOut: Set StdOut = WScript.StdOut
    
    Dim oWmi: Set oWmi    = GetObject("winMgmts:{impersonationLevel=impersonate}!\\.\Root\CIMv2")
    Dim oDisks: Set oDisks= oWmi.ExecQuery("Select * from Win32_DiskDrive")
    Dim idx
    Dim oItem
    
    for idx=0 to oDisks.count-1
      Set oItem = oDisks.ItemIndex(idx)
      StdOut.writeLine(idx & "=" & oItem.SerialNumber)
    next
    

    This is Excel VBA test macro, does it print out disk serials? Compare values to your predefined variable. Serial may have a whitespace letters.

    Public Sub DiskDrives()
        Dim ws As Worksheet
        Dim oWmi As Object
        Dim oDisks As Object
        Dim oItem As Object
        Dim idx As Long
        
        Set ws = Application.ActiveSheet
        
        Set oWmi = GetObject("winMgmts:{impersonationLevel=impersonate}!\\.\Root\CIMv2")
        Set oDisks = oWmi.ExecQuery("Select * from Win32_DiskDrive")
        For idx = 0 To oDisks.Count - 1
            Set oItem = oDisks.ItemIndex(idx)
            Debug.Print ("|" & idx & "=" & oItem.SerialNumber & "|")
            ws.Cells(4 + idx, 1).Value = "Disk " & idx
            ws.Cells(4 + idx, 2).Value = "|" & oItem.SerialNumber & "|"
        Next
    End Sub
    
    0 讨论(0)
提交回复
热议问题