Para ello uso un script hecho con la potente herramienta de scripting kix32 y la excelente utilidad de copiado Robocopy. Debemos descargar ambos programas y ponerlos en algun directorio del path de nuestro sistema, por ejemplo en c:\windows\system32.
Los scripts son dos:
moverperfil.bat:
@echo off
kix32 moverperfil.kix $usuario=%1 $nuevaruta=%2
rem kix32 moverperfil.kix $usuario=usuario $nuevaruta=K:\USUARIOS\usuario
moverperfil.kix:
Function Name2SID(Optional $userid,Optional $domain)
If $userid = "" $userid = @USERID EndIf
If $domain = "" $domain = @LDOMAIN EndIf
Dim $objWMIService
$objWMIService = GetObject("winmgmts:\\.\root\cimv2")
$Name2SID = $objWMIService.Get("Win32_Account.Name='"+$userid+"',Domain='"+$domain+"'").SID
If @ERROR EXIT @ERROR EndIf
EndFunction
if not isdeclared($usuario) or not isdeclared($nuevaruta)
"Uso: kix32 moverperfil.kix "+chr(36)+"usuario=<usuario> "+chr(36)+"nuevaruta=<ruta-nuevo-perfil>" ?
exit 1
endif
$pos=instrrev($nuevaruta,"\")
$basenuevaruta=left($nuevaruta,$pos-1)
;poner permisos a $basenuevaruta como los de c:documents and settings. Usar setacl o icacls
If not Exist($basenuevaruta)
"ERROR: El directorio "+$basenuevaruta+" no existe."?
" Debe crearlo antes con los mismos permisos que c:\documents and settings" ?
exit 1
else
"AVISO: No olvide verificar permisos en "+$basenuevaruta ?
if exist($nuevaruta)
"ERROR: El directorio "+$nuevaruta+" no puede existir previamente."?
" Se crea automaticamente en en el proceso." ?
exit 1
endif
EndIf
$sid=Name2SID($usuario)
if @ERROR
"ERROR: SID usuario no encontrada." ?
exit 1
else
"INFO: SID usuario encontrado: "+$sid ?
endif
$rutaregistro="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\"+$sid
$viejaruta=readvalue($rutaregistro,"ProfileImagePath")
"INFO: Ruta actual de su perfil: "+$viejaruta ?
"INFO: Copiando perfil a nueva ruta" ?
SHELL '%COMSPEC% /e:1024 /c ROBOCOPY.EXE "'+$viejaruta+'" "'+$nuevaruta+'" /MIR /COPYALL /E /R:0'
; "añadir > nul a la anterior linea para ocultar la salida"
if @ERROR<>1
"ERROR: fallo en el copiado" ?
exit 1
else
"INFO: Copiado" ?
endif
"INFO: Modificando registro para nuevo perfil" ?
if writevalue($rutaregistro,"ProfileImagePath",$nuevaruta,"REG_EXPAND_SZ")
"ERROR: Error en modificacion registro: "+@ERROR+"-"+"@SERROR ?
else
"INFO: Hecho, puede probar a entrar con perfil nuevo." ?
"INFO: Si todo funciona, no olvide borrar "+$viejaruta ?
endif
Para ello primero debemos crear en k: una carpeta, por ejemplo "usuarios", de la cual colgará el nuevo perfil. Dicha carpeta debe tener el mismo propietario y permisos que "c:\documents and settings".
Una vez hecho esto, lo que debemos es ejecutar moverperfil.bat desde un terminal de Windows, que a su vez llama a moverperfil.kix. El script debe ejecutarse desde un usuario distinto de "carla", con permisos de administrador, para evitar problemas de bloqueo y/o de acceso. El uso sería:
moverperfil.bat carla k:\usuarios\carla
Finalmente modifica la clave de registro "HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<perfil de carla>/ProfileImagePath" para que apunte a k:\usuarios\carla.
Es aconsejable reiniciar el equipo e iniciar sesión con el usuario "carla" para probar que todo está en orden. Una vez verificado esto podemos eliminar el viejo perfil de carla en c:\documents and settings\ y liberar espacio en c:
La próxima será de Linux o le cambio el nombre al blog....
No hay comentarios:
Publicar un comentario