After some research I found a way to automate this in Windows 7: AutoHotKey
I've written a script to create a text file to sync with the NAS while iTunes is opened. This text file is a key unique to the computer opening it and will only be created/removed when the computer in question is "online" to ensure integrity.
; the only way to keep integrity is to make sure that everything is synced before creating or deleting key
; if there is no key, only create one when there is internet connection, which is a safe bet that it is synced.
NodeNam = www.google.com
IPs := HostToIp(NodeName)
DllCall("Ws2_32\WSACleanup") ; always inlude this line after calling to release the socket connection
if IPs <> -1
FileAppend, This file represents iTunes key`n, %A_WorkingDir%\Win7Key.txt ;Msgbox, %NodeName%`n%IPs%
;if the right key exist, allow iTunes to run, and delete key only if internet is available
Run, "C:\Program Files (x86)\iTunes\iTunes.exe"
if IPs <> -1
;checks if internet is available by querying www.google.com
HostToIp(NodeName) ; returns -1 if unsuccessful or a newline seperated list of valid IP addresses
VarSetCapacity(wsaData, 32) ; The struct is only about 14 in size, so 32 is conservative.
result := DllCall("Ws2_32\WSAStartup", "UShort", 0x0002, "UInt", &wsaData) ; Request Winsock 2.0 (0x0002)
if ErrorLevel ; check ErrorLevel to see if the OS has Winsock 2.0 available:
MsgBox WSAStartup() could not be called due to error %ErrorLevel%. Winsock 2.0 or higher is required.
if result ; Non-zero, which means it failed (most Winsock functions return 0 on success).
MsgBox % "WSAStartup() indicated Winsock error " . DllCall("Ws2_32\WSAGetLastError") ; %
PtrHostent := DllCall("Ws2_32\gethostbyname", str, Nodename)
if (PtrHostent = 0)
h_addr_list := ExtractInteger(hostent,12,false,4)
offset := ((A_Index-1)*4)
PtrAddress%A_Index% := ExtractInteger(AddressList,offset,false,4)
If (PtrAddress%A_Index% =0)
i := A_Index
Straddress%i% := Straddress%i% "." ExtractInteger(address%i%,(A_Index-1 ),false,1)
Straddress%i% := ExtractInteger(address%i%,(A_Index-1 ),false,1)
Straddress0 = %i%
loop, %Straddress0% ; put them together and return them
_this := Straddress%A_Index%
if _this <>
IPs = %IPs%%_this%
if A_Index = %Straddress0%
IPs = %IPs%`n
ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
result += *(&pSource+pOffset+A_Index-1) << 8*A_Index-8
I hope this help someone else. I'm now looking for a Mac OSX solution. I will be doing some research on Automator to see if possible. If someone else has any other solution please share.