Laden...

Ermitteln, wer die .exe geöffnet hat

Erstellt von C4RL0 vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.751 Views
C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 11 Jahren
Ermitteln, wer die .exe geöffnet hat

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."

D
615 Beiträge seit 2009
vor 11 Jahren

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

C
40 Beiträge seit 2011
vor 11 Jahren

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

D
615 Beiträge seit 2009
vor 11 Jahren

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

C
40 Beiträge seit 2011
vor 11 Jahren

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.

C4RL0 Themenstarter:in
96 Beiträge seit 2012
vor 11 Jahren

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."

H
18 Beiträge seit 2011
vor 11 Jahren

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.

1.820 Beiträge seit 2005
vor 11 Jahren

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 🙁

3.825 Beiträge seit 2006
vor 11 Jahren

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

16.807 Beiträge seit 2008
vor 11 Jahren

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

3.825 Beiträge seit 2006
vor 11 Jahren

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3