puppetmaster mente du "logget på database" eller på netværket (som du skrev)?
Hvis det bare er på databasen (som jeg kan se, at ferdinand har forstået - tak for filen :), så kan du bruge denne kode:
Public Function ListUsers(Optional DatabaseSti As String) As Byte Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim intUser As Integer Dim fld As ADODB.Field Dim Brugernavne As String
' Brugerliste-schema informationerne kræver denne magiske kode. ' Hvorfor der ikke er foruddefineret en konstant til dette, er et mysterium Const adhcUsers = "{947bb102-5d43-11d1-bdbf-00c04fb92675}"
Set cnn = New ADODB.Connection If DatabaseSti = "" Then Set cnn = CurrentProject.Connection Else cnn.Provider = "Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabaseSti & ";User ID=Admin;Password=;" cnn.Open End If
Set rst = cnn.OpenSchema(adSchemaProviderSpecific, , adhcUsers)
With rst Do Until .EOF intUser = intUser + 1 Brugernavne = Brugernavne & "Bruger # " & intUser & vbNewLine For Each fld In .Fields If fld.Name = "COMPUTER_NAME" Or fld.Name = "LOGIN_NAME" Then Brugernavne = Brugernavne & " " & fld.Name & "=" & Trim(Replace(fld.Value, Chr(0), "")) & vbNewLine End If Next .MoveNext Loop End With ListUsers= intUser rst.Close Set rst = Nothing cnn.Close Set cnn = Nothing If intUser = 1 Then MsgBox "Der er ingen andre brugere på denne database!", vbExclamation, "Ingen brugere!" Else MsgBox Brugernavne, vbInformation, "Følgende " & intUser & " bruger(e) har databasen åben:" End If End Function
Vejledning: Indsæt funktionen i et modul. Ønsker du at få listet brugere, som er logget på den aktuelle database, kaldes blot ListUsers
Ønsker du at få listet brugere på en ekstern database, kaldes funktionen således: ListUsers "X:\Databaser\XDatabase.mdb" eller Antal = ListUsers("X:\Databaser\XDatabase.mdb" )
Sikke en bunke! Thomas, jeg HAR allerede "lånt" koden fra din hjemmeside, men jeg vil lægge en knap på hovedformularen, som kører ListUsers, men den skal KUN vises HVIS det er mig åbner programmet. Der skal checkes på hvilken bruger der er logget på netværket. Havde engang et eksempel, noget med FSO........siger det dig/jer noget=
'************ Code Start ************* ' This code was originally written by Dev Ashish. ' It is not to be altered or distributed, ' except as part of an application. ' You are free to use it in any application, ' provided the copyright notice is left unchanged. ' ' Code Courtesy of ' Dev Ashish ' Private Type WKSTA_USER_INFO_1 wkui1_username As Long 'name of the user _ currently logged on _ to the workstation. wkui1_logon_domain As Long 'the domain name of _ the user account of the _ user currently logged on wkui1_oth_domains As Long 'list of other LAN _ Manager domains browsed _ by the workstation. wkui1_logon_server As Long 'name of the computer _ that authenticated the _ server End Type
Private Declare Function apiWkStationUser Lib "Netapi32" _ Alias "NetWkstaUserGetInfo" _ (ByVal reserved As Long, _ ByVal Level As Long, _ bufptr As Long) _ As Long
Private Declare Function apiStrLenFromPtr Lib "kernel32" _ Alias "lstrlenW" _ (ByVal lpString As Long) _ As Long
Private Declare Sub sapiCopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" _ (hpvDest As Any, _ hpvSource As Any, _ ByVal cbCopy As Long)
Public Function fUserNTDomain() As String '******************************************* 'Name: fUserNTDomain [NT ONLY] (Function) 'Purpose: Find NT Domain name of current user 'Author: Dev Ashish 'Date: Thursday, January 14, 1999 'Called by: Any 'Calls: NetWkstaUserGetInfo, RTLMoveMemory 'Inputs: None 'Returns: NT Domain Name of Current User '******************************************* On Error GoTo ErrHandler Dim lngRet As Long Dim lngPtr As Long Dim tNTInfo As WKSTA_USER_INFO_1
lngRet = apiWkStationUser(0&, 1&, lngPtr) If lngRet = 0 Then Call sapiCopyMemory(tNTInfo, ByVal lngPtr, LenB(tNTInfo)) If Not lngPtr = 0 Then With tNTInfo fUserNTDomain = fStringFromPtr(.wkui1_logon_domain) End With End If End If
ExitHere: Exit Function ErrHandler: fUserNTDomain = vbNullString Resume ExitHere End Function
Private Function fStringFromPtr(lngPtr As Long) As String Dim lngLen As Long Dim abytStr() As Byte lngLen = apiStrLenFromPtr(lngPtr) * 2 If lngLen > 0 Then ReDim abytStr(0 To lngLen - 1) Call sapiCopyMemory(abytStr(0), ByVal lngPtr, lngLen) fStringFromPtr = abytStr() End If End Function '************ Code End *************
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.