that does not work for me either. probably because my desktop does not have TPM.

I tried a simplistic approach:
 Code:
Imports System.Management
Module Module1
    Sub Main()
        Dim scope As ManagementScope = New ManagementScope("\\.\root\CIMV2\Security\MicrosoftTpm")
        Dim query As SelectQuery = New SelectQuery("Win32_Tpm")
        Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(scope, query)
        Dim mo As ManagementObject
        Dim thing() As Object = {False}
        For Each mo In searcher.Get()
            mo.InvokeMethod("IsActivated", thing)
            Dim TPMActivated As ManagementBaseObject = mo.InvokeMethod("IsActivated", Nothing, Nothing)
            Dim TPMEnabled As ManagementBaseObject = mo.InvokeMethod("IsEnabled", Nothing, Nothing)
            Dim TPMOwned As ManagementBaseObject = mo.InvokeMethod("IsOwned", Nothing, Nothing)
            Console.WriteLine(thing(0).ToString)
            Console.WriteLine(TPMActivated("IsActivated") & " " & TPMEnabled("IsEnabled") & " " & TPMOwned("IsOwned"))
        Next
        Console.ReadKey()
    End Sub

End Module


none of if errors out, but none of it also prints nothing and indeed with debugger I can see it does not even enter the for each loop on my computer. could try the laptop.
_________________________
!

download KiXnet