OK - I have a temporary fix for you. For some reason, you can change the service description, binary, user, and password, but I'm getting errors on the other values. I probably need to translate the strings into specific values - gotta head back to the documentation for the other parameters.

For now, your solution is to replace the entire MODIFY section in the UDF with the following code. The only real change(s) is that I commented out the original line and replaced it with a line that updates only the 4 string values. I verified that this works on my server.

 Code:
   ; ============================== 
   Case $_Action = 'Modify'
    If VarType($_SvcData) < 8192 Exit 87 EndIf	; exit if service data array is not defined 
    If UBound($_SvcData) <> 9 Exit 87 EndIf	; exit if service data array is invalid 
    ; Change(DisplayName, PathName, ServiceType, ErrorControl, StartMode, DesktopInteract, StartName, StartPassword,  
    ; next 3 unsupported... 
    ; LoadOrderGroup, LoadOrderGroupDependencies, ServiceDependencies) 
    For Each $_oItem in $_cItems
      ;$_R = $_oItem.Change($_SvcData[1],$_SvcData[2],$_SvcData[3],$_SvcData[4],$_SvcData[5],$_SvcData[6],,$_SvcData[8],$_SvcData[9])
      $_R = $_oItem.Change($_SvcData[1],$_SvcData[2],,,,,$_SvcData[8],$_SvcData[9])
      $_E = @ERROR
    Next

Just copy this, locate the corresponding section in your copy of the UDF, select the text and paste this over the original. You should be good to go. Just don't ask to change the service type or error control values (yet!). Should not be a problem now for changing user ID or password.

Also - I changed the code slightly to stop/start the service only if it was originally in a Running state:
 Code:
    ; stop the service
    If Left($SvcInfo[7], 1) = 'R'
      $ = WMISvcMgr('Stop', $Service, , $Computer)
      @SERROR ?
    EndIf

    ; write the updated config info back to the service database
    $ = WMISvcMgr('Modify', $Service, $SvcInfo, $Computer)
    @SERROR ?

    ; restart the service with the new credentials
    If Left($SvcInfo[7], 1) = 'R'
      $ = WMISvcMgr('Start', $Service, , $Computer)
      @SERROR ?
    EndIf

FYI - the "?" is a shortcut for a carriage return + line feed, and generally should come AFTER the text you print, not before. It's different from BASIC, where it's a shortcut for the PRINT statement and comes first. ;\)

Glenn
_________________________
Actually I am a Rocket Scientist! \:D