This is a Script I wrote to find the error. Replace the names with something useful and try it, if you want. For me it just issues the following error:
1 COM exception error "SetInfo" ((null) - (null)) [1/1]

(All other @error are zero...)

bye
einhirn
PS: I didn't post the code first because I didn't want to produce much traffic, but now I realize we aren't on a mailing list...

--------------------------------
BREAK ON

$adsUser = GetObject("LDAP://cn=einhirn,ou=someou,ou=myusers,dc=rz,dc=mydomain,dc=de")
if @ERROR<>0
? @SERROR + " (" + @ERROR + ")"
quit 1
endif

? $adsUser.sAMAccountname
? $adsUser.AccountDisabled
? $adsUser.IsAccountLocked
? $adsUser.PasswordRequired
? $adsUser.FirstName
? $adsUser.LastName
? $adsUser.DisplayName
? $adsUser.LoginScript
? $adsUser.Profile
? $adsUser.HomeDirectory
? $adsUser.homeDrive

$adsUser.Put("FirstName", "Egon")
? "@error @serror"
$adsUser.Put("LastName", "Bottlebeer")
? "@error @serror"
$adsUser.Put("DisplayName", "Egon Bottlebeer")
? "@error @serror"
$adsUser.Put("LoginScript", "kix32 login.kix")
? "@error @serror"
$adsUser.Put("Profile", "\\bigserver\homedir\profile")
? "@error @serror"
$adsUser.Put("HomeDirectory", "\\bigserver\homedir")
? "@error @serror"
$adsUser.Put("homeDrive", "u:")
? "@error @serror"

$adsUser.SetInfo
? "@error @serror"
$adsUser.GetInfo
? "@error @serror"

?? "After Change"

? $adsUser.sAMAccountname
? $adsUser.AccountDisabled
? $adsUser.IsAccountLocked
? $adsUser.PasswordRequired
? $adsUser.FirstName
? $adsUser.LastName
? $adsUser.DisplayName
? $adsUser.LoginScript
? $adsUser.Profile
? $adsUser.HomeDirectory
? $adsUser.homeDrive
_________________________
SIGSIG: No Signature found