Entwickler-Ecke

Windows API - Dateien kopieren/ersetzen die in Benutzung sind


Christian213 - Fr 26.04.13 11:37
Titel: Dateien kopieren/ersetzen die in Benutzung sind
Hallo,

ich verzweifel gerade an folgendem Task: Ich möchte gerne Dateien kopieren (nicht verschieben). Dabei sollen eventuell vorhandene, gleichnamige Dateien ersetzt werden.
Sind diese in Benutzung, so soll dies beim nächsten Reboot passieren.
MoveFileEx bietet mittels des Flags MOVEFILE_DELAY_UNTIL_REBOOT ja eine entsprechende Möglichkeit beim Verschieben, nun will ich aber nicht dass die Quellfiles gelöscht werden.
Hat jemand eine Idee?

Vielen Dank und Gruß
Christian


Gerd Kayser - Fr 26.04.13 13:07

user profile iconChristian213 hat folgendes geschrieben Zum zitierten Posting springen:
Sind diese in Benutzung, so soll dies beim nächsten Reboot passieren.

Batch-Datei mit den Kopierbefehlen erstellen. Diese Datei dann in dem entsprechenden Registry-Schlüssel eintragen. Als letzten Befehl in der Batch-Datei einen Befehl zum Löschen dieser Datei hinzufügen.

Als Schlüssel kommt ...\Software\Microsoft\Windows\CurrentVersion\RunOnce (gibt's unter HKey_Current_User und HKey_Local_Machine) in Betracht.


Christian213 - Fr 26.04.13 13:16

user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconChristian213 hat folgendes geschrieben Zum zitierten Posting springen:
Sind diese in Benutzung, so soll dies beim nächsten Reboot passieren.

Batch-Datei mit den Kopierbefehlen erstellen. Diese Datei dann in dem entsprechenden Registry-Schlüssel eintragen. Als letzten Befehl in der Batch-Datei einen Befehl zum Löschen dieser Datei hinzufügen.

Als Schlüssel kommt ...\Software\Microsoft\Windows\CurrentVersion\RunOnce (gibt's unter HKey_Current_User und HKey_Local_Machine) in Betracht.

Hallo,
Danke für die Antwort.
Nur was mache ich bei Benutzern mit eingeschränkten Rechten? Die dürfen ja nichts in die Registry schreiben.
Gibt's denn keine Funktion über die ShellAPI die ich nutzen könnte?


Tranx - Fr 26.04.13 14:22

Es gibt doch eine Menge Tools, die ein Synchronisieren von Verzeichnissen (ich denke, das meinst Du damit) ermöglichen, die man auch vielleicht als Task schreiben kann, bei denen selbst benutzte Dateien mit kopiert werden.

Ich nutze die Eigenschaften von Freecommander für solche Zwecke. Das ist ein Explorer-Ersatz mit Synchronisationstool.

http://www.freecommander.com/de/

oder suche doch mal bei Google oder anderen Suchmaschinen.

Oder nutze doch Synchronisationstools wie Subversion:

http://www.heise.de/download/subversion.html

Da kannst Du auch Versionshistorien verwalten. Besonders geeignet für Programmierverzeichnisse. Falls Du bei Quelltext-Änderungen mal was vermasselt hast.


jaenicke - Fr 26.04.13 15:55

Das ist ein klassisches Beispiel für einen Installer. Wenn du ein Setup Tool benutzt, das auf den Windows Installer setzt, macht das das automatisch ohne dass du da groß etwas machen musst...

Unter current_user kann ein eingeschränkter Benutzer auch in den Autostart-Schlüssel schreiben.