Es ist zwar kein Problem den alten Dateimanager Winfile unter W2K zum Leben zu erwecken, jedoch sind leider nicht alle Funktionalitäten wie unter Windows NT 4.0 gegeben. Was ich vermisse, ist die Möglichkeit eine Datei (z.B. MS-Access-Datenbank) zu markieren und unter Datei, Eigenschaften, Geöffnet von.. nachzusehen, wer gerade auf der Datei arbeitet. Für mich ist dies nötig, damit ich für eine Datenbankreparatur zuvor eventuell die Leute rauskicken kann, da sonst die Reparatur mit einem Fehler abbricht.
Weiß hier jemand Rat oder kennt ein anderes Tool, das mir diese Funktionalität bietet?
Archiv Server-Windows 15.877 Themen, 54.317 Beiträge
Hi,
folgendes VBScript gibt Dir die angemeldeten User aus:
Option Explicit
Private Function EntferneNullChar(ByVal ZeichenKette)
' Ist ein Nullchar enthalten?
If (InStr(1, ZeichenKette, Chr(0)) > 0) Then
' Ja, also den Text davor zurückgeben
ZeichenKette = Left(ZeichenKette, InStr(1, ZeichenKette, Chr(0)) - 1)
End If
' Rückgabe setzen
EntferneNullChar = ZeichenKette
End Function
' Konstanten
Const adStateOpen = 1
Const adUseClient = 3
Const adSchemaProviderSpecific = -1
' Speicher reservieren
Dim dbConnect 'As ADODB.Connection
Dim rsAbfrage 'As ADODB.Recordset
Dim strLogin 'As String
Dim strComputer 'As String
Dim strAusgabe 'As String
Dim rsCount 'As Long
Dim strDatenbankOrt 'As String
Dim strSchema 'As String
' Datenbank festlegen
strDatenbankOrt = "C:\My Files\App-Launch\applaunch.mdb"
' Abzufragendes Schema festlegen
strSchema = "{947bb102-5d43-11d1-bdbf-00c04fb92675}"
' Verbindung zum Datenbank-Objekt aufbauen
Set dbConnect = CreateObject("ADODB.Connection")
' Datenbank öffnen
dbConnect.Provider = "Microsoft.Jet.OLEDB.4.0"
dbConnect.Properties("Data Source") = strDatenbankOrt
dbConnect.CursorLocation = adUseClient
dbConnect.Open
' Schema öffnen
Set rsAbfrage = dbConnect.OpenSchema(adSchemaProviderSpecific, , strSchema)
' Ist die Abfrage geöffnet worden?
If (rsAbfrage.State = adStateOpen) Then
' Ja, Alle Datensätze durchlaufen
Do While Not rsAbfrage.EOF
' Den UserNamen kopieren
strLogin = EntferneNullChar(rsAbfrage.Fields("Login_Name").Value)
' Den ComputerNamen kopieren
strComputer = EntferneNullChar(rsAbfrage.Fields("Computer_Name").Value)
' Ausgabe erstellen
strAusgabe = "Benutzer " & strLogin & " vom Computer " & strComputer
' Ausgabe in die Liste einfügen
MsgBox strAusgabe
' Nächster Datensatz
rsAbfrage.MoveNext
Loop
' Abfrage schließen
rsAbfrage.Close
Else
' Nein, es liegt ein Fehler vor
MsgBox "Fehler bei der Abfrage"
End If
' Abfrage entfernen
Set rsAbfrage = Nothing
' Verbindung trennen
dbConnect.Close
' Verbindung schließen
Set dbConnect = Nothing
Es wird mindestens ein User gefunden (das bist Du).
Das Script ist in der MSDOS-Eingabeaufforderung getestet. Wie man die Ausgaben in die DOS-Box schreibt, weiß ich nicht, deswegen kommen MessageBoxen.
Hallo,
danke für diesen Tipp. Ich werde die Sache baldmöglichst mal ausprobieren. Wenn dies dann funktioniert, bin ich schon mal einen Schritt weiter. Nun stellt sich aber immer noch die Frage, wie kann ich die Anwender, die auf der Datenbank sitzen und mich daran hindern diese reparieren zu können rauszuschmeißen. Die Leute zu informieren ist eine schlechte Lösung, da es leider dennoch vorkommt, daß irgendjemand darauf hängen bleibt, auch wenn er die entsprechende Anwendung beendet.
Vielen Dank!