PDA

Vollständige Version anzeigen : Aktuellen User auslesen


dmD
23.08.2001, 11:50
Hallo zusammen,

ich mal wieder.

Ich habe folgendes Prob.
Ich möcht mittels VBA den aktuellen User auslesen. Als User wird mir dann aber immer "Admin" angezeigt. Woran kann das liegen?

Bin für alle Hinweise dankbar.

Stema
23.08.2001, 12:02
Hallo dmD,

mit CurrentUser kannst Du den aktuellen User auslesen. Wenn er "Admin" zurückgibt liegt das daran, daß Admin eingeloggt ist. ;)

Birgit Dannenberg
23.08.2001, 12:05
sieh mal dort nach:
http://www.donkarl.com/ (FAQ 2.24)

Birgit

DirkT
23.08.2001, 12:06
Könntest Du den Codeteil posten?
So lässt sich nur vermuten das du entweder den Benutzernamen von Access (standard: Admin) oder den Windowsnamen ausliest, jedoch als Admin eingeloggt bist.
Gruß Dirk

dmD
23.08.2001, 12:56
Hallo,

ich habe im Steuerelementunhalt den Ausdruck CurrentUser() eingegeben und wie gesagt ich bin im Netzwerk nicht als Admin angemeldet. Er bringt aber "Admin"
Seuftz! Heul! Rot anlauf!

sekoe
23.08.2001, 13:03
Hi,
ich arbeite mit folgenden Funktionen:
String = fktGetUserName() ' Username ermitteln
String = fktGetComputerName() ' Computername ermitteln

Option Compare Database
Option Explicit

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _
(ByVal lpBuffer As String, ByRef nSize As Long) As Long
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, ByRef nSize As Long) As Long

Public Function fktRTrimAPIString(ByVal s As String) As String

'Schneidet von einem von einer WinAPI-Routine zurückgelieferten String die Null-Character ab.

Dim p As Long

p = InStr(s, Chr(0))
If (p > 0) Then s = Left(s, p - 1)
fktRTrimAPIString = s

End Function


Public Function fktGetComputerName() As String

Dim s As String, L As Long
Dim dmy As Variant

On Error GoTo fktGetComputerName_Error

s = String(255, 0)
L = Len(s)
If (GetComputerName(s, L) = 0) Then s = ""

fktGetComputerName_Done:
fktGetComputerName = fktRTrimAPIString(s)
Exit Function

fktGetComputerName_Error:
Resume fktGetComputerName_Done

End Function

Public Function fktGetUserName() As String

Dim s As String, L As Long
Dim dmy As Variant

On Error GoTo fktGetUserName_Error

s = String(255, 0)
L = Len(s)

If (GetUserName(s, L) = 0) Then s = ""
fktGetUserName = fktRTrimAPIString(s)

fktGetUserName_Done:
fktGetUserName = fktRTrimAPIString(s)
Exit Function

fktGetUserName_Error:
Resume fktGetUserName_Done

End Function

Birgit Dannenberg
23.08.2001, 13:04
CurrentUser liefert den Access-User. Das macht nur Sinn, wenn man das Access.Sicherheitssystem verwendet. Tust Du aber wohl nicht.

Aber warum liest Du nicht mal meinen Link nach??? :(

Birgit

Günther Kramer
23.08.2001, 13:21
Hallo dmD,

auf unserr Homepage http://www.access-paradies.de -> Software-Katalog -> Tipps & Tricks -> API findest du ein Beispiel mit offenem Code, welches dir den Windows-User ermittelt.
Wenn du Access 2000 benutzt, importiere alle Objekte dieses Beispiels in eine neue A00-Datenbank, da sich das Beispiel mit Access 2000 nicht öffnen lässt.

dmD
23.08.2001, 14:28
Danke Danke Danke,

hat funktioniert und vor allem ich habe wieder was dazu gelernt.

endu
18.01.2002, 11:55
thx, habe auch gebrauch gemacht!!

Buchegger Siegfried
07.02.2002, 09:15
Eine weitere einfache Möglichkeit!

Beim Öffnen eines Formulares oder auch als Funktion.
Private Sub Form_Open(Cancel As Integer)

' Eine einfache Möglichkeit beim Öffnen eines Formulares aus der SET-Vaeriable den
' aktuellen User auszulesen. Natürlich können auch alle anderen Variablen damit
' ausgelesen werden

Dim EnvString, Indx, Msg, PathLen
Indx = 1
Do
EnvString = Environ(Indx) ' Einträge
If Left(EnvString, 9) = "USERNAME=" Then ' Prüfe auf USER_NAME Eintrag
Me![user] = Mid(EnvString, 10, 7)
USERID = Mid(EnvString, 10, 7)
PathLen = Len(Environ("USER_NAME")) ' Gib Länge zurück
'Msg = "USER_NAME Eintrag = " & Indx & " und Länge = " & PathLen
Exit Do
Else
Indx = Indx + 1 ' Kein Eintrag mit USER_NAME
End If
Loop Until EnvString = ""

If PathLen > 0 Then
'MsgBox Msg ' User Anzeige
Else
MsgBox "Keine User-ID oder nicht am Netz"
End If

End Sub

erwin
07.02.2002, 12:42
@sigi

warum einfach, wenn's kompliziert auch geht (allerdings unter W98 wird das nix liefern, wohingegen die API Version immer klappt)

environ("username")

siehe OL-Hilfe zu environ !

so long erwin...

MAP_SM
07.05.2002, 16:46
Also ich habe die Variante von sekoe
verwendet, und funzt einfach prima.

nutze NT 4.0 und A 97

big thx

Map