Identifying a certain Windows machine

Monte Goulding monte at sweattechnologies.com
Tue Mar 30 00:07:48 EDT 2010


On 30/03/2010, at 2:51 PM, Joe F. wrote:

> Does anyone know of a way to identify the Windows machine of a  
> certain user in a reliable way.
>
> I want my app to download a stack file which will only run on one  
> user's machine.
> Is there a way to access something like a MAC number or some unique  
> identifier on Windows machines.

Yep:

# GetMACAddress()
#
# Function to return the MAC address
#
# Makes use of ifconfig on OS X and ipconfig on Windows

function getMACAddress
   -- value to return
   local retVal
   switch (the platform)
   case "MacOS"
     if the systemVersion < 10 then
       -- MacOS
       set the directory to specialFolderPath("apple")
       put "tell application" && quote & "Apple System Profiler" & \
           quote & cr & "get appletalk address" & cr & "end tell" into  
getMACScript
       put "tell application" && quote & "Apple System Profiler" & \
           quote & cr & "close window" && quote & "Apple System  
Profiler" & quote & \
           cr & "end tell" into quitASPScript
       do getMACScript as AppleScript
       put the result into retVal
       do quitASPScript as AppleScript
       replace "{" with "" in retVal
       replace "}" with "" in retVal
       replace quote with "" in retVal
     else
       -- OS X
       put shell("ifconfig en0") into ifConfigs
       if char 1 to 4 of ifConfigs = "zsh:" then
         return "Error retrieving interface configuration."
       else
         get matchText(ifconfigs,"(?s)ether (.*?) ",retVal) -- These  
are spaces on either side of (.*?)
         if it is false then
           return "Error retrieving MAC address."
         end if
       end if
     end if
     break
   case "Win32"
     -- All Windows
     put (there is a file (specialFolderPath("system") & "/ 
IPCONFIG.EXE")) into winExists
     put (there is a file (specialFolderPath("system") & "/SYSTEM32/ 
IPCONFIG.EXE")) into sys32Exists
     if winExists or sys32Exists then
       set the hideConsoleWindows to true
       put shell("ipconfig /all") into temp
       get matchText(temp,"Physical Address[\. ]*: ([A-Z0-9-]*)",retVal)
     else
       return "Error retrieving MAC address."
     end if
     break
   end switch
   return retVal
end getMACAddress
>
>
> Bonus question:
> Is there a good way to make a stack self-destruct?

Just don't let the user save the file if you only want it run just  
after the download.
use:
go stack url http://www.myserver.com/test.rev

Cheers

Monte



More information about the use-livecode mailing list