obtener todos los usuarios de un equipo

06/03/2007 - 02:14 por Ivan | Informe spam
hola a todos,

¿como podría obtener (vía código) la lista de 'todos' los usuarios de un
equipo, aunque no estén activos en ese momento?

como siempre, si podéis ayudarme os lo agradezco

un saludo y hasta pronto
Ivan

Preguntas similare

Leer las respuestas

#6 Francisco Parrilla
07/03/2007 - 03:34 | Informe spam
no estoy muy seguro si windows permita mas de dos sesiones activas en el
mismo momento, he creado una cuenta iniciando sesion y al irme a mi usuario
primario me arroja que el segundo usuario esta desconectado, aun cuando solo
cambie de usuario en Windows XP.

Revisa este codigo a ve si se adapta:

'
-
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
'
-
Sub pruebaUsuariosRVignon()
Dim objWMI As Object, objUsuario As Object
Set objWMI = GetObject("winmgmts:\\.oot\cimv2")
Sheets(1).Select
[A1].Select
fila = 1
For Each objUsuario In objWMI.ExecQuery("SELECT * FROM Win32_UserAccount")
If objUsuario.LocalAccount And Not objUsuario.disabled Then
ActiveCell.Value = "Nombre: " & objUsuario.Name
ActiveCell.Offset(0, 1).Value = "Nombre completo: " &
objUsuario.fullname
ActiveCell.Offset(0, 2).Value = "Descripción: " &
objUsuario.description
ActiveCell.Offset(0, 3).Value = DameUsuario(objUsuario.Name) '
Usuario activo
End If
fila = fila + 1
Range("a" & fila).Select
Next objUsuario
Set objUsuario = Nothing
Set objWMI = Nothing
End Sub
'
-
Function DameUsuario(usuario As String)
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If lngX <> 0 Then
DameUsuario = Left$(strUserName, lngLen - 1) & " " & "usuario "
& usuario
Else
DameUsuario = "Incapaz de detectar usuario." & " " & "usuario "
& usuario
End If
End Function
'
-


Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice

El verdadero buscador crece y aprende, y descubre que siempre es el
principal responsable de lo que sucede.
Jorge Bucay

La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en alguna
pared, el ignorante permanece tranquilo en el centro de la estancia.
Anatole France
Respuesta Responder a este mensaje
#7 Ivan
07/03/2007 - 21:55 | Informe spam
hola Francisco, gracias de nuevo

no estoy muy seguro si Windows permita mas de dos sesiones activas en el
mismo momento



la verdad es que yo tampoco lo se, de hecho prácticamente solo he trabajado
en un equipo con un solo usuario (yo) y es la primera vez que se me ha
ocurrido hacer pruebas 'multiusuario'. De cualquier forma, para mi caso,
tampoco importaría (incluso posiblemente seria mejor si no lo permitiera),
pues lo que en realidad me hace falta solo es obtener el nombre de todos los
usuarios registrados en un equipo(con el que acceden a su cuenta), aunque no
hayan iniciado sesión.

esto parece realizarlo bien el código de Ruben (a falta de correr algunas
pruebas/variantes mas), aunque, como comentaba, no comprendo del todo su
funcionamiento, pues parece funcionar sin tener que recurrir a la llamada a
las APIs. Me imagino que aquí esta la clave -> '("winmgmts:\\.oot\cimv2")'
y en cuanto pueda intentare indagarlo, sobre todo por saciar un poco mi
curiosidad.

en cuanto a los códigos, cuando pueda los pruebo, aunque a simple vista mas
o menos van por el mismo camino que mis pruebas. En cualquier caso muchas
gracias

un saludo y hasta pronto
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida