Wow- that is some answer. Thank you Monte.

I was actually expecting something like "getSystemID" to be built into Revtalk, but...

You inspired me to make myself a script library.

Thanks,
Joe F.

On Mar 30, 2010, at 12:07 AM, Monte Goulding wrote:


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
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to