Hi Mark,

Just a few comments (I'll leave Glenn to help with the coding) \:D

KiXtart v4.x
Unless you've tested it with KiXtart 4.0, 4.02, 4.22, etc... then I'd enter the version you did test under dependencies.



;License: Creative Commons Attribution 3.0 United States
; http://creativecommons.org/licenses/by/3.0/us/
Though this is not a bad deal I don't think we can accept it as a posted UDF with this license
We've never actually used any type of license (probably should have) but have basically used the principal
that ALL publicly posted code on the site is free to use in any shape form or manner one wishes to.


:OLoop
The use of GOTO and LABELS is considered [old school, out of date] coding practice. Though quite valid to use, we would rather it be coded to prevent it's use especially for a posted UDF.


Though not required you may want to either code for it or make a point that the SERVER names should not contain a UNC path


If wanted the use of HKEY_CURRENT_USER can be shortened to: HKCU

As mentioned about making the UDF silent, I would remove some of the minor items still left in that were not silent such as
CLS
? "Pointing Offline Files to New Server..."
etc...

I'm not actually sure what's it's official name is but you may want to preload your arrays in case of an invalid read it would abend KiX

 Code:
$DrvSrvShr = Split(UCase($KeyName),"/",-1)
$DrvSrv = $DrvSrvShr[2]
$DrvShr = $DrvSrvShr[3]



You should also have a CASE1 in case none of your expected results are there in your Select statement.

Good luck and I'll let Glenn carry on from here

.