Página 1 de 1

Cambiar nombre del Usuario (Ayuda)

Publicado: 17 Ago 2012, 20:45
por jassir
Bueno la idea es cambiar el nombre del Usuario y no tengo idea para nada
nota vale recalcar que si se cambiar manualmente
pero la idea es cambiarlo con un scrip de autoit de forma desatendida

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Ventana = GUICreate("Nombre de Usuario", 250, 200, -1, -1)
$Input = GUICtrlCreateInput(@UserName, 24, 64, 185, 21)
$Button = GUICtrlCreateButton("Aceptar", 32, 112, 161, 41)
$Label = GUICtrlCreateLabel("Nombre de usuario", 40, 20, 200, 17)
GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $Button
         MsgBox(0, "Windows", "El nombre del Usuario ha sido cambiado")
   EndSwitch
WEnd

Re: Cambiar nombre del Usuario (Ayuda)

Publicado: 18 Ago 2012, 15:49
por BasicOs
Aquí hay un programa reciente que hace algo parecido:

http://www.emesn.com/autoitforum/viewto ... 199#p14199

Por otro lado:
Arrancar en modo admin con RunAs() y el comando net y lo que quieras, net user te permite bastantes cosas pero para cambiar grupo/usuario.
net group x: Aņadir/ver/modificar grupos de usuarios en un dominio
/Domain:x -> nombre del dominio
/add x -> aņadir un grupo nuevo

net user usuario clave: Aņadir/ver/modificar usuarios en un dominio
/domain:nombre -> nombre del dominio
/add x -> agregar usuario al dominio
net user para llamarlo con Autoit algunos ejemplos en http://ss64.com/nt/net_useradmin.html :
desde el cmd o Run() o RunAs() http://support.microsoft.com/kb/251394
y en http://technet.microsoft.com/en-us/libr ... 90718.aspx


Aquí un ejemplo de como usar los objetos wscript que con la opcion NETWORK accedes a esto::

http://www.emesn.com/autoitforum/viewto ... =13&p=9313

Ejemplo de conversión de VbScript a Autoit solo cambia lo que está entre parentesis ;) :

Código: Seleccionar todo

En WsScript
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'HP QuietJet'")
For Each objPrinter in colInstalledPrinters
    objPrinter.CancelAllJobs()
Next

-->>Lo mismo en Autoit creando el objeto y luego llamado a las funciones y métodos, pero puedes usar la potencia de Autoit para complementarlo:
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\" & $strComputer & " ootcimv2")
$colInstalledPrinters = $objWMIService.ExecQuery ("Select * from Win32_Printer Where Name = 'HP LaserJet 3200 Series PCL'")
For $objPrinter in $colInstalledPrinters
    $objPrinter.CancelAllJobs()
Next
Este es el codigo en VB para cambiar el usuario:

Código: Seleccionar todo

' Description: 
' Script that renames a local user account 
' Will return errorlevel 1 if it fails 

Set oArgs = Wscript.Arguments 
If oArgs.Count <> 2 Then 
WScript.Echo "Invalid input, needs to be: " & vbCrLf & vbCrLf _ 
& WScript.ScriptName & " <old-name> <new-name>" 
WScript.Quit 1 ' return with errorlevel 1 
End If 

Set oWshNet = CreateObject("WScript.Network" ) 

' get computer name for local computer 
sComputerName = oWshNet.ComputerName 

' Turn off internal error handling 
On Error Resume Next 

' connect to user object 
Set oUser = GetObject("WinNT://" & sComputerName & "/" _ 
& oArgs(0) & ",user" ) 

If Err.Number = 0 Then 
Set oComputer = GetObject("WinNT://" & sComputerName) 

' rename user 
Set oNewUser = oComputer.MoveHere(oUser.ADsPath, oArgs(1)) 

If Err.Number = 0 Then 
WScript.Echo "User account successfully renamed from " _ 
& oArgs(0) & " to " & oArgs(1) 
Else 
WScript.Echo "Was not able to rename user account from " _ 
& oArgs(0) & " to " & oArgs(1) 
WScript.Quit 1 ' return with errorlevel 1 
End If 

Else 
WScript.Echo "User account " & oArgs(0) & " does not exist!" 
WScript.Quit 1 ' return with errorlevel 1 
End If 
Reamente no tengo hecho lo que necesitas, si no te explico las técnicas que hay, también puedes usar un programa externo que lo haga y llamarlo desde el interface que pones dentro del Select/Case:
Case $Button
Lo que haces realmente es crear tu propio interface para otro programa que ya lo hace en cmd/batch

Salu22:)

Re: Cambiar nombre del Usuario (Ayuda)

Publicado: 18 Ago 2012, 22:26
por melvinhn
Pues mira yo para muchas cosas utilizo la consola de windows. CMD
este comando es muy amplio wmic (Windows Management Instrumentation Command)
los cuales son compatibles con autoit

Código: Seleccionar todo

#NoTrayIcon
$value = InputBox("Renombrar Usuario...", @CRLF&"1= Recuerde reiniciar el equipo"&@CRLF&"      para que los cambios surjan efecto"&@CRLF&@CRLF&"2= Solo 60 caracteres maximo", @UserName, "")
If $value <> "" Then
_RunDos('wmic UserAccount where Name="%username%" call Rename Name="'&$value&'"')
EndIf

Func _RunDos($sCommand)
	Local $nResult = RunWait(@ComSpec & " /C " & $sCommand, "", @SW_HIDE)
	Return SetError(@error, @extended, $nResult)
EndFunc
Cheque bien esta parte ya que es la mas importante
wmic UserAccount where Name="%username%" call Rename Name="Nombre nuevo"

tambien te recomiendo busques ayuda en "net user" ya que con ese comando puedes agregar usuarios editar el fullname activarlo desactivarlo
solo lo aplicas a un comando y listo...

tambien te recomiendo le heches un vistazo al siguiente programa que hice en autoit en su debido momento talvez te sirven muchas opciones de configuracion...
http://www.emesn.com/autoitforum/viewto ... f=4&t=3469