That is a good question, but to rule out the first case could you place an "? $ChangeVLKey" after the first "$ChangeVLKey = @error" ?

If that one is 0 then we know for sure that it is because of the Retail version that this function isn't working.