una - Usando VB6, ¿cómo obtengo el usuario y el dominio actual en Windows XP?
matrices en visual basic 6.0 ejercicios resueltos (5)
Necesito el usuario actual y el dominio. Estoy usando una aplicación VB 6.
Gracias
¿Qué hay de esto?
Private Function IsAdmin() As Boolean
Dim groups As Object
Dim user As Object
Set groups = GetObject("WinNT://./administrators")
For Each user In groups.members
If UCase(Environ("USERNAME")) = UCase(user.Name) Then
IsAdmin = True
End If
Next user
End Function
Básicamente, necesitas hacer llamadas a la API de Windows. Buscando en vbnet.mvps.org Recibo las siguientes respuestas.
Una forma sería preguntarle al medio ambiente:
Dim UserName As String
Dim UserDomain As String
UserName = Environ("USERNAME")
UserDomain = Environ("USERDOMAIN")
(Funciona en Windows NT y solo arriba, obviamente).
Utilice los siguientes métodos del objeto WshNetwork, que está disponible después de hacer referencia al modelo de objetos de host de Windows Script en su proyecto:
Dim Network As WshNetwork
Set Network = New WshNetwork
Debug.Print "ComputerName: " & Network.ComputerName
Debug.Print "UserDomain: " & Network.UserDomain
Debug.Print "UserName: " & Network.UserName
Eché los resultados a mayúsculas o minúsculas para obtener consistencia, pero esos son los métodos que necesita.
Tenga en cuenta que cuando se ejecuta en una máquina que no está registrada en un dominio, ComputerName y UserDomain devuelven lo mismo: el nombre de la computadora.
Y la versión API:
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Declare Function LookupAccountName Lib "advapi32.dll" Alias "LookupAccountNameA" (lpSystemName As String, ByVal lpAccountName As String, sid As Any, cbSid As Long, ByVal ReferencedDomainName As String, cbReferencedDomainName As Long, peUse As Long) As Long
Private Sub Form_Load()
Dim sDomainName As String * 255
Dim lDomainNameLength As Long
Dim sUserName as String
Dim bUserSid(255) As Byte
Dim lSIDType As Long
Rem Create a buffer
sUserName = String(100, Chr$(0))
Rem Get the username
GetUserName sUserName, 100
Rem strip the rest of the buffer
sUserName = Left$(sUserName, InStr(sUserName, Chr$(0)) - 1)
rem Show the temppath and the username
MsgBox "Hello " + strUserName
lResult = LookupAccountName(vbNullString, sUserName, bUserSid(0), 255, sDomainName, lDomainNameLength, _
lSIDType)
if lResult <>0 then
msgbox sDomainName
end if
end sub