[C#] Geöffnete Dateien abfragen

Nil18

Erfahrenes Mitglied
Hallo liebe Helfer =)

Ich möchte einen "AutoBuilder" programmieren, der mir automatisch in diversen Abständen ein Projekt neu kompiliert. Und dazu muss er logischerweise abfragen, ob nicht ein Benutzer gerade das Projekt geöffnet hat.

Daher meine Frage: Wie kann man die Geöffneten Dateien abfragen?

Unter Systemsteuerung -> Verwaltung -> Computerverwaltung -> System -> Freigegebene Ordner -> Geöffnete Dateien sieht man welche Dateien ein Benutzer gerade offen hat. (Siehe Bild im Anhang)

Zuständig dafür ist angeblich der Dienst "Server" bzw. "lanmanserver"
Dieser Dienst wiederrum reisst nichts anderes hoch als eine Datei (?) namens "netsvcs".

Weiss jemand ob und wie man (durch evtl. API Calls) die offenen Dateien auf diesem oder einen anderen Weg abfragen kann?

Danke vielmals für die Hilfe!
Ich zähle auf euch :)

PS: Programmiert wird in MSVS 2005 (.NET 2.0)
 

Anhänge

  • 27745attachment.jpg
    27745attachment.jpg
    34,2 KB · Aufrufe: 78
Anderer Vorschlag. Wie installierst du dir nicht folgende Umgebung:
  • CVS oder Subversion
  • CruiseControl.NET oder einfach nur MSBuild bzw. NAnt
Damit hast du eine Sourcecode-Verwaltung und somit quasi auch ein Backup deines Sources bzw. ein Repository welches einfach zu sichern ist. Zweitens kannst du mittels MSBuild (ist bei .NET 2.0 ohnehin dabei) oder NAnt automatisierte Builds durchführen. Diese laden sich die aktuelle Version vom Sourcecontrol und kompilieren das ganze dann durch. Entsprechende Konfiguration natürlich vorausgesetzt. Dadurch ergibt sich dein Problem gar nicht, ist einfach zu bewerkstelligen (für das Aufsetzen des gesamten Szenarios inkl. Build-Scripts benötige ich ca. 30 Minuten - allerdings schon oft gemacht).

Ein weiterer Vorteil: Du lernst wichtige Tools kennen, die in vielen Unternehmen eingesetzt werden.
 
Hallo Norbert!
Danke erstmal für deine Antwort!

Die Sache ist folgende:
Wir haben hier mehrere Server. Auf einem dieser speichern wir, via "SourceSafe", alle Projektdaten in regelmäßigen abständen. Also diese nach Datum sortierten Backups haben wir bereits.

Allerdings werden an unseren Projekten ständig Dinge verändert (eh klar). Somit lädt man sich den neuesten Source vom SourceSafe runter (auschecken), verändert ihn und speichert ihn nachher wieder (einchecken).

Das Autobuild Programm soll nun auf ALL unseren Serven und Workstations laufen. Es soll möglich sein, von überall aus Kompilieraufträge abzuschicken. Das Autobuild Programm soll ebenfalls dazu in der Lage sein, die Aufgabe aufzuteilen, sodass jeder Server nur einen Bruchteil der Arbeit erledigen muss.

Angenommen man möchte ein Projekt neu kompilieren, welches 5 Abhängigkeiten hat. An 1 dieser Abhängigkeiten wird allerdings gerade etwas geändert.
Nun kann der Kompiliervorgang natürlich nicht vorgenommen werden, da genau 1 Projekt gerade ausgecheckt ist und genau DAS soll der Autobuilder feststellen.

Quasi: "Ok, ich soll Projekt xy kompilieren. Dazu brauche ich die dll ab, cd, ef und gh.
Und dann wird jedes System durchsucht, ob gerade irgendwo eine der dlls in Verwendung ist.
Wenn ja, kommt ein Fehler.

Und der Grund, warum ich nicht eine der von dir genannten Methoden nehme ist, dass ich sonst auf JEDEM Server und auf JEDEM Rechner die von dir genannten Programme installieren und konfigurieren müsste.

Und das wäre absolut uneffizient.
Der Autobuilder ist ein eigenständiges Programm welches über eine Webseite zu Bedienen ist und fertig. Mehr brauchen wir nicht :) Der Dienst läuft irgendwo - kommuniziert mit allen anderen Rechnern - und fertig.

Es wäre also in jedem Fall das einfachste, wenn mir wer sagen könnte wie ich nun die zur Zeit geöffneten Dateien auf jedem System herausfinden könnte.

Vielen Dank.
 
Zuletzt bearbeitet:
Zurück