Hallo zusamen,
ich habe eine kleine .exe im lokalen Netzwerk liegen. Nun kann es sein, dass sie von X usern gleichzeitig verwendet wird. Wie kann ich (u.U. über ein nur bei mir erscheinendes Menue) feststellen, wer aktuell die .exe benutzt? (Also ohne den Umweg über eine DB o.ä.)
Gibts da was?
Gruß
Carlo
"Palabras que no coinciden con hechos no valen nada."
Hallo C4RL0
Ich würde mal behaupten die exe wird beim ausführen auf den Ziel-Rechner kopiert. Somit glaube ich nicht, das dies möglich ist.
(Also ohne den Umweg über eine DB o.ä.)
Es ist zwar DB ähnlich, aber dennoch könntest du es z.B mit einem XML lösen.
Beste Grüsse
Diräkt
Hallo C4RL0,
der Server der die SMB Freigaben bereitstellt führt auch Buch darüber. Du kommst mittels "Computerverwaltung > System > Freigegebene Ordner > Geöffnete Dateien" dort hin.
Verwalten von Sitzungen und geöffneten Dateien
Der Namespace System.DirectoryServices stellt dir die nötigen Funktionen bereit, um an die Informationen zu gelangen.
Gruß Chris
Hallo Chris360
Das würde aber nicht funktionieren, wenn das Netzlaufwerk von z.B einem NAS mit Linux bereit-gestellt würde ?!
Beste Grüsse
Diräkt
Das würde aber nicht funktionieren, wenn das Netzlaufwerk von z.B einem NAS mit Linux bereit-gestellt würde
Das ist mir bewusst. Geht aber aus dem Initiator Post nicht hervor.
Es ist schon ein Win-Server, allerdings weiß ich nicht, wieviel Rechte ich dort habe, das werde ich testen müssen.
Gruß
Carlo
"Palabras que no coinciden con hechos no valen nada."
Ich weiß nicht, ob meine Möglichkeit umsetzbar ist, aber ich poste sie mal.
Sobald die Anwendung startet, könntest du im Code doch mit
string ComputerName = Dns.GetHostName();
(System.Net wird benötig) den Computernamen herausfinden
string UserName = Environment.UserName;
den aktuellen Benutzernamen herausfinden.
Und das lässt du dann zusammen mit aktueller Uhrzeit mit einem StreamWriter in eine zugriffgeschützte Datei auf den NAS schreiben, und hast auf deinem eigenen PC einen Parser für die Datei, der sie übersichtlich darstellt.
PS: Wenn nötig, kann der Zeitpunkt, zu dem das Programm geschlossen wird auch noch gespeicher werden.
Hallo!
@Hobby Programmierer:
Das hätte aber den Nachteil, dass, wenn die Netzwerkverbindung abbr8icht oder die Anwendung abstürzt, dieser Eintrag nicht wieder entfernt werden kann.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Der Namespace
> stellt dir die nötigen Funktionen bereit, um an die Informationen zu gelangen.
Gibt es einen Beispielcode dazu ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Ich bezweifel, dass ein Active Directory-Namespace die passenden Methoden für solch ein Vorhaben liefert...
Meines Wissens kann das C# direkt gar nicht, sondern man muss über die WinAPI gehen; genauer gesagt über die WinAPI Handles.
Diesbezüglich hab ich das hier gefunden: Windows Media Center TCP/IP Controller: DetectOpenFiles.cs
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke für den Tipp !
Hab da noch Folgendes gefunden :
Geöffnete Dateien anzeigen und schliessen
An app to see who has files open on a network server
Offene Dateien unter Windows anzeigen
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3