Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1128to1132
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Benutzernamen lang und kurz auslesen mit code

Benutzernamen lang und kurz auslesen mit code
chris
Hallo VBA experten,
habe folgenden Code von einem Ex Kollegen bekommen.
Dieser klappt auch super.
Ich kann die Kennung angebenund erhalte den Kompletten Benutzernamen in einer MSGbox.
Was ich aber gerne möchte und nicht schaffe ist es aus dem Kompletten Namen die kennung herauszubekommen.
Würde mich sehr freuen wenn mir jemand helfen könnte.
Dafür im voraus schon einmal vielen Dank !
die Funktion "BenutzerNameKurz" würde schon das passende ergebniss liefern aber leider eben nur von dem aktuell angemeldeten Benutzer und nicht von einem benutzer von dem ich den Namen vorgeben.
Hier der Code.

Option Explicit
Private Enum EXTENDED_NAME_FORMAT
NameSamCompatible = 2
End Enum
Private Declare Function GetUserNameEx Lib "secur32.dll" Alias "GetUserNameExA" (ByVal  _
NameFormat As EXTENDED_NAME_FORMAT, ByVal lpNameBuffer As String, ByRef nSize As Long) As Long
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String,  _
nSize As Long) As Long
Sub Benutzername()
MsgBox BenutzerNameLang("chris")
End Sub
Function BenutzerNameLang(Optional Kennung As String) As String
Dim sBuffer As String, ret As Long, u
sBuffer = String(256, 0)
ret = Len(sBuffer)
If Kennung  "" Then
Set u = GetObject("WinNT://" & Replace(Kennung, "\", "/") & ",User")
BenutzerNameLang = Trim(Replace(u.FullName, "*", ""))
Set u = Nothing
ElseIf GetUserNameEx(NameSamCompatible, sBuffer, ret)  0 Then
Set u = GetObject("WinNT://" & Replace(Left$(sBuffer, ret - 1), "\", "/") & ",User")
BenutzerNameLang = Trim(Replace(u.FullName, "*", ""))
Set u = Nothing
End If
End Function
Function BenutzerNameKurz() As String
Dim strUserName As String
strUserName = VBA.String(100, VBA.Chr$(0))
GetUserName strUserName, 100
BenutzerNameKurz = VBA.UCase(VBA.Left$(strUserName, VBA.InStr(strUserName, VBA.Chr$(0)) - 1) _
)
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Benutzernamen lang und kurz auslesen mit code
21.01.2010 12:38:12
bst
Hi Chris,
so wie ich das verstehe kommst Du mit GetUserName und GetUserNameEx nur an Informationen zum angemeldeten User. Mit NetUserGetInfo kannst Du Informationen eines beliebigen Users bestimmen, benötigst dazu aber dessen 'kurzen Namen'. Von lang auf kurz geht so also wohl auch nicht.
Versuche das doch alternativ mal mit WMI, also in etwa so.
HTH, Bernd
--
Option Explicit

Function BenutzerNameKurz(ByVal strLongName) As String
    Dim strComputer As String
    Dim objWMIService As Object, colUser As Object, objUser As Object
    
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    'Set colUser = objWMIService.ExecQuery("Select * from Win32_UserAccount")
    Set colUser = objWMIService.ExecQuery("Select * from Win32_UserAccount WHERE FullName='" & strLongName & "'")
    For Each objUser In colUser
        BenutzerNameKurz = objUser.Name
        Exit Function
    Next
End Function

Sub x()
    MsgBox BenutzerNameKurz("Langer Name")
End Sub


Anzeige
AW: Benutzernamen lang und kurz auslesen mit code
21.01.2010 22:48:03
chris
Hallo werde ich testen.
Gebe dann Feedback.
Danke im voraus !

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige