PDA

Vollständige Version anzeigen : Netzwerkuser in unterschiedlichen Umgebungen ermitteln


Birgit Dannenberg
08.08.2001, 16:48
Hallo an alle!

Ich verwende den Netzwerk-Account zum Einbinden externer Tabellen und hole mir die User-Id über die api-Funktion 'getUserName' mit Zugriff auf die 'advapi32.dll'.

Das scheint aber unter W2K nicht zu laufen, ich bekomme nur den Standarduser 'Administrator'.
Bei meiner Recherche bin ich auf diverse andere Lösungen gestoßen, z.B. auch mit Hilfe einer 'mpr.dll'.

Wer kann mir erklären, wo die Unterschiede liegen und wie ich das allgemein gültig in den Griff bekommen kann, einschließlich Abfrage des aktuellen Betriebssystems.
In Frage kommen hier Win95/98/NT/2000.

Und wie kann ich das abhandeln, wenn ich mehrere api's verwenden muss, die sich auf verschiedene dll's beziehen, welche nicht unbedingt vorhanden sein müssen?

Ich hoffe, ich habe mich verständlich genug ausgedrückt. Dank im voraus für jeden Hinweis.

mfg Birgit

Stefan Kulpa
08.08.2001, 17:39
<font face="Verdana" size="2">Hallo,

so geht's:</font>

<FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> WNetGetUser <FONT COLOR=#000080>Lib</FONT> "mpr.dll" <FONT COLOR=#000080>Alias</FONT> _
"WNetGetUserA" _
(<FONT COLOR=#000080>ByVal</FONT> lpName <FONT COLOR=#000080>As String</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> lpUserName <FONT COLOR=#000080>As String</FONT>, _
lpnLength <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Sub</FONT> Test()

<FONT COLOR=#000080>Const</FONT> MAX_LENGTH <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 255
<FONT COLOR=#000080>Dim</FONT> lStatus <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

<FONT COLOR=#000080>Dim</FONT> sName <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>Dim</FONT> sUserName <FONT COLOR=#000080>As String</FONT>

sUserName = Space$(MAX_LENGTH + 1)
lStatus = WNetGetUser(sName, sUserName, MAX_LENGTH)
<FONT COLOR=#000080>If</FONT> lStatus = 0 <FONT COLOR=#000080>Then</FONT>
sUserName = Left$(sUserName, InStr(sUserName, Chr(0)) - 1)
MsgBox sUserName
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080><HR></FONT></FONT>

<font face="Verdana" size="2">Laut MSDN ist die Funktion WNetGetUser betriebssystemunabhängig, genauer:

<font color="#0000FF">Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Requires version 2.0 or later.
Header: Declared in winnetwk.h.
Import Library: Use mpr.lib.
Unicode: Implemented as Unicode and ANSI versions on Windows NT.
</font>

HTH,</font>

Birgit Dannenberg
08.08.2001, 17:42
Danke, werde ich morgen früh gleich ausprobieren!

Birgit