![]() |
Prüfen, ob EXE in Benutzung ist
Hallo !
Folgende Situation : Auf einem verbundenen Netzlaufwerk ('N:\') befindet sich eine EXE-Datei ('Programm.EXE'), die von mehreren PCs im Netzwerk aufgerufen werden kann (auch gleichzeitig). Nirgendwo wird festgehalten, wie viele PCs gerade diese Datei geöffnet haben. Nun soll von einem dieser verbundenen PCs das Programm aktualisiert werden und zwar mittels eines eigenen Programms ('Update.EXE'). Wie kann ich sicherstellen, dass keiner der anderen PCs die Programm.EXE noch geöffnet hat? Die Lösungen mit IsFileInUse, die man hier im Forum finden kann, haben hier zu keinem akzeptablen Ergebnis geführt. Die scheinbar simple Lösung die Exe-Datei zu Löschen und bei Erfolg die neue EXE in das Verzeichnis zu kopieren hat unter Win7 ebenfalls versagt. Das Löschen scheint zu funktionieren, obwohl die EXE auf einem anderen PC genutzt wird, beim Schreiben kommt es aber zu Problemen. Kennt noch jemand eine Methode festzustellen, ob die EXE in Benutzung ist? Gruß Guido R. |
AW: Prüfen, ob EXE in Benutzung ist
Hallo,
da der Prozess der Applikation auf den entfernten Rechner läuft, dürfte es sich schwierig gestalten herauszufinden von wem die Applikation noch geöffnet ist. Alle Netzwerkrechner abfragen ist keine Möglichkeit? Grüße Klaus |
AW: Prüfen, ob EXE in Benutzung ist
Schreibe ein kleines Zusatzprogramm. Dieses wird von den Clients aufgerufen. Es kopiert dann die EXE vom Netzwerklaufwerk und startet dann die Kopie. So ist die Exe nie in Verwendung. Beim nächsten Neustart der Clients holen die sich die neue Exe.
Ggf. könntest Du es noch etwas intelligenter machen. Mach z.B. zusätlich zu der eigentlichen Exe eine kleine Textdatei, wo die Version der Netzwerk-Exe drin steht. Das Startprogramm vergleicht dann die Version aus der Textdatei mit der lokalen Kopie und kopiert die Exe nur, wenn die Netzwerk-Exe neuer ist. So muss nicht jedes Mal die EXE über das Netzwerk transportiert werden, sondern nur, wenn es ein Update gab. |
AW: Prüfen, ob EXE in Benutzung ist
Was hat der "Server" für ein Betriebssystem?
Unter Windows 7 kann man über die "Computerverwaltung > System > Freigegebene Ordner > Geöffnete Dateien" einen Überblick erhalten, welche Dateien von welchem Rechner geöffnet sind. Dort sollte eigentlich auch deine Exe-Datei drin stehen. Wenn das so ist, müsste man mal herausfinden, wie Windows an diese Informationen gelangt. Unter Windows Server 2008 R2 findest du diese Übersicht im "Server-Manager > Rollen > Dateidienste > Freigabe -und Speicherverwaltung > Geöffnete Dateien verwalten" |
AW: Prüfen, ob EXE in Benutzung ist
Server 2011 und eventuell auch in allen normalen Windowsen?
Compoterverwaltung \ System \ Freigegebene Ordner \ Geöffnete Dateien Nja, darin stehen die Dateien, welche über's Netzwerk offen sind, aber der Server hat die Datei ja auch geöffnet, um sie überhaupt weiterreichen zu können und dieses ist dann genauso testbar, wie andere lokal geöffnete Dateien (Unlocker und Co.) In Win7 gibt es doch auch eine neue API, welche man nach Programen fragen kann, die eine Datei offen hält. |
AW: Prüfen, ob EXE in Benutzung ist
|
AW: Prüfen, ob EXE in Benutzung ist
@Klaus
Das upzudatende Programm ist eine Clipper - Altlast :kotz: Dort etwas einzubauen, was auf eine IP-Anfrage reagiert ist ... ...aufwendig bis gewagt. @Nersgatt An sich eine sehr gute Idee. Jedoch wurde das Programm von jmd. geschrieben, der von Programmierung eigentlich wenig Ahnung hatte. Pfade zu Datenbankdateien, Berichtvorlagen etc. sind nicht unbedingt mit glob. Pfadvariablen verknüpft. Also müsste man an hundterten Stellen eben diese einfügen. In CLIPPER :kotz: 2. Problem : Es könnte zu Dateninkonsistenzen kommen, wenn zwei unterschiedliche Programmversionen auf die gleiche Datenbank-Datei zugreifen. @Morphie, Himitsu Das sollte mit jeder Windows-Version ab XP laufen. In den meisten Fällen wird wohl kein "echter" Server zum Einsatz kommen, aber ausschließen kann ich das nicht. Die Sache mit den "geöffneten Dateien" klingt vielversprechend. Jetzt müsste ich "nur" noch wissen, wie ich diese mit Delphi abfragen kann. |
AW: Prüfen, ob EXE in Benutzung ist
Zitat:
Zitat:
Aber umbennenen geht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz