Okay, here is some SILVER PLATTER code for you to run Rich.

Requires KiXtart 4.5 or newer, and does not support NT4.
Should work fine on 2000/XP/2003 systems.

Please read the notes within the code on how to use it, and post any questions or comments you have.

Normally one would place the $sComputer parameter first in the UDF, however due to the way that Optional works
in KiXtart anything after the word Optional becomes optional so I placed the $sComputer at the end since
it is the only optional parameter depending on how you run it.
If you run it against a lot of computers then it's not optional really, but if you run it while locally
logged on then it's optional and does not need to be supplied.


Break On
Dim $SO
$SO=SetOption('Explicit','On')
$SO=SetOption('NoVarsInStrings','On')
$SO=SetOption('NoMacrosInStrings','On')

Dim $Computer, $Computers, $Update, $Ping
$Computers = ReadFile(@ScriptDir+'\'+'computers.txt')
If @ERROR
'There was an error reading the computers.txt file: ' + @ERROR + ' - ' + @SERROR ?
Quit 1
EndIf
For Each $Computer In $Computers
If $Computer
$Computer = Trim($Computer)
$Ping = OSPing($Computer)
If $Ping
$Update = UpdateRemoteINI('main.ini','Finance','Member',5,$Computer)
;Create a list of computers you want to update with one computer per line
;and save it in the same folder as this script named computers.txt
;Edit the line above to indicate the correct SECTION, KEY, and STRING
;Per the WriteProfileString function in the manual.
Else
'The system ' + $Computer + ' did not respond. ' ?
EndIf
EndIf
Next

; If you want to do a single computer while you're logged in you can run something like this
; $Update = UpdateRemoteINI('main.ini','Finance','Member',5)

; There is no need to supply the name of the computer if you run it while logged in locally
; with Admin rights. You need Admin rights to write to all those other profiles.


Function UpdateRemoteINI($File,$Section,$Key,$String,Optional $sComputer)
Dim $BaseKey, $BaseFolder,$Drive,$Folder,$Profile,$W
$BaseKey = 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\'
$sComputer=IIf(Not $sComputer,'','\\'+Join(Split($sComputer,'\'),'',3)+'\')
If Not $sComputer
$BaseFolder = ExpandEnvironmentVars(ReadValue($BaseKey+'ProfileList','ProfilesDirectory'))
Else
$BaseFolder = ReadValue($sComputer+$BaseKey+'ProfileList','ProfilesDirectory')
$Drive = InStrRev($BaseFolder,'\')
$BaseFolder = $sComputer+Left(ReadValue($sComputer+$BaseKey,'SystemRoot'),1)+'$\'+Right($BaseFolder,-$Drive)
EndIf
$Folder = Dir($BaseFolder)
While @ERROR = 0
$Folder = $BaseFolder + '\' + $Folder
If GetFileAttr($Folder) & 16
$Profile = $Folder + '\' + $File
If Exist($Profile)
'Updated ' + $File + ' file for: ' + $Profile ?
$W = WriteProfileString($Profile, $Section, $Key,$String)
EndIf
EndIf
$Folder = Dir()
Loop
Exit 1
EndFunction

Function ReadFile($file)
Dim $lf, $f, $_, $t
$lf=CHR(10)
$f=FreeFileHandle
$_=Open($f,$file)
If @ERROR Exit @ERROR EndIf
Do $t=$t+$lf+ReadLine($f) Until @ERROR
$_=Close($f)
$ReadFile=Split(SubStr($t,2),$lf)
EndFunction

Function OSPing($sComputer)
Shell '"'+%COMSPEC%+'" /c ping -n 1 '+$sComputer+' |find /C "TTL=" >nul'
$OSPing = NOT @ERROR
EndFunction