I was about to ask how the INISections and INIKeys UDFs were inefficient (certainly they are redundant) but it seems that it got sorted out.

I think it's a matter of scripting preference regarding the UDFs. Personally I don't like dealing with multidimension arrays. Using the functions allows you to "See and Say" what is happening with all those values. Here is Glenn's example using the UDFs, done on the fly, untested.

 Code:
$aData = IniArray('.\file.ini')
For each $S in INISections($aData)
 'Section: ' + $S ?
 For each $K in INIKeys($aData,$S)
  'Key / Data: ' + $K + ' / ' +  ReadINIArray($aData,$S, $K) ?
 Next
Next