In the GetMACAddress function there is a conditional block of code at the beginning that check to see if IsWindowsNT is TRUE. There is no function called IsWindowsNT throughout the code, so this would always be FALSE. There are many places throughout the code checking for IsWindowsNT that code be failing due to always being FALSE.
I discovered this on an XP system that was failing to get the MAC address because it was getting an Error 430, "Object does not support automation". This was happening at the GetObject call to winmgmts later on in the GetMACAddress function. XP is a Windows-based OS, so it should have executed the code to get the MAC address from the If table.
There is a function IsWinNT4Plus that is also used throughout the code that looks like it's for the same purpose. Should the IsWindowsNT be replaced by IsWinNT4Plus?
This will be fixed in version 3.6 of the program