Win32 postgres.exe + *.dlls verschwinden regelmäßig auf verschiedenen Systemen

Umgebung:
Wir haben uns für eine Client-Server-Lösung dazu entschiedenen postgresql als Serverdienst mit ODBC-Clients (psqlODBC) aus Microsoft Access 2007 zuzugreifen. Wir haben dazu ein Serversetup mit Inno Setup 5.3.0 erstellt in welchem wir die offizielle postgresql-8.4.4-1-windows.exe integriert haben und automatisch eine vorinitialisierte Datenbank einrichten.

Die Zeilen dafür sehen unscheinbar wie folgt aus:

Option:='--prefix "' + ExpandConstant('{app}') + '\PostgreSQL\{#pgVersionA}.{#pgVersionB}" --datadir "' + ExpandConstant('{app}\{#DBdata}') + '" --superaccount postgres --superpassword {#PASSWORDINSTALL} --mode unattended';
ShellExec('', ExpandConstant('{tmp}\postgresql-{#pgVersionA}.{#pgVersionB}.{#pgVersionC}-{#pgVersionDD}-windows.exe'), Option, '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);

Problem:
In unregelmäßigen Abständen fehlen genau die postgres.exe und alle dlls im /bin-Verzeichnis. Ich habe das Ganze über SVN mal beobachtet, sodass ich ausschließen kann, dass andere als genau diese 13 Dateien verschwinden. Unser einziger Hinweis ist, dass es etwas mit Windows Update oder dem Windows Defender zu tun haben könnte. Denn die einzigen Systemen, die wir regelmäßig nutzen, wo der Fehler noch nicht auftrat, sind Systeme auf denen der Defender ausgeschaltet ist. Aber leider fehlt uns die Möglichkeit den Fehler bewusst zu provozieren, z. B. hat sich gestern beim monatlichen Windowsupdate auf meinem System nichts getan, dabei hatte ich extra das Definitionsupdate für den Defender separat installiert. Wir hatten auch die Theorie, dass es vielleicht daran liegt, dass wir den Server nicht im Programme-Verzeichnis installiert hatten, aber auch in Programme ist uns zuletzt am 13. auf einem Windows-XP-Rechner sowieso einem Windows-7-Pro-64Bit-Rechner (anderer Standort, anderes Netzwerk) verabschiedet.

Wir tappen derzeit völlig im Dunkeln eine Ursache zu finden. Wobei uns relativ egal wäre woran es liegt, wenn wir stattdessen gleich zur Lösungsfindung kämen. :sunglasses: Kann uns jemand Hinweise geben, wie wir den Fehler weiter eingrenzen könnten? Also 32bit oder 64bit, genauso wie XP oder Win-7-Pro oder Win-7-Starter scheint völlig egal zu sein. Da es auf XP keine UAC gibt, kann diese auch nicht ursächlich sein.

Tatsächlich gibt es immer mal wieder Probleme mit Virenscannern aller Art.
Leider gibt es dafür systembedingt keine brauchbare Lösung.

Ein Eintrag in die Whitelist könnte helfen.

Das Windows-XP-System mit diesem Problem hat nichtmal einen Virenscanner laufen, eines auf dem wir das Problem bisher noch nicht hatten hat dafür sogar, wie habe ich das umschrieben wo gelesen, “das Gegenkrankheitpaket aus der gelben Verpackung” drauf. Werden aber es mal beim Defender in die Whitelist eintragen, auch wenn von diesem keine Meldungen oder Logs auszumachen sind. Ich habe bei meinem Win-7-Pro-System zumindest keine in den Ereignissen oder so gefunden.

Nachtrag: Mir scheint man kann keine Elemente präventiv in die Whitelist aufnehmen beim Windows Defender, zumindest nicht aus der Oberfläche heraus.

Wenn nach einer Standard-Installation von PostgreSql die Sicherheiteinstellungen für die Verzeichnisse und Dateien nicht geändert worden sind, kann nur jemand mit administrativen oder system-Rechten die Dateien löschen. Interessant ist auch der Hinweis, das alle DLL’s aus dem bin-Verzeichnis gelöscht wurden. Solange der PostgreSQL-Server aktiv ist, können nur die DLL’s gelöscht werden, auf die das System zu dem Zeitpunkt nicht zugreift. Um alle DLL’s zu löschen muß der PostgreSQL-Server deaktiviert sein. Dazu muß der Dienst “Postgresql …” bendet werden, und dieses geht auch nur mit administrativen oder system-Rechten.

Um das Problem abzustellen, solltet ihr euch an die Administration wenden. Die kennen in der Regel Möglichkeiten , wie man die Aktivitäten auf einen Computer überwacht.

Ob die System eigenen Möglichkeiten wie hier

watchdirectory - Hilfe - Windows-Verzeichnisse überwachen - Windows für die überwachung konfigurieren

und hier

SO WIRD´S GEMACHT: Überwachen des Benutzerzugriffs auf Dateien, Ordner und Drucker in Windows XP

beschrieben dafür ausreichen, kann ich nicht sagen.



mfg

fristo

Das ist uns auch aufgefallen, die Dateien waren immer nach einem Neustart weg. Ist klar, während des Betriebes kann man in Windows ja keinen Dienst löschen. Würde er beendet werden, würde es das ggf. beim Entwickeln auffallen. Daher fiel unser Verdacht auch sehr schnell auf irgendwas systemnahes von Windows.

Das mit den Objektzugriffsüberwachungen klingt nicht schlecht, werden es mal probieren, ob das fürs nächste Mal irgendwelche Hinweise bringt.

Also ich habe mir nochmal die Dateirechte nachgeguggt, scheints wurden diese zwar bei mir durch SVN angepasst, aber auf anderen Systemen ohne SVN sind diese unangerührt (habe die postgres.exe mal als Referenzobjekt betrachtet) zumal auch vor der “Sicherung und Überwachung” mit SVN ist es ja schon einmal auf dem PC aufgetreten.

PS: Hier zeigt sich mal wieder einer der seinen Unterschiede in der Professional-Version von Windows. Werden deshalb einige Systeme nicht überwachen können.

Kleine Korrektur:
Auf dem Windows-XP-Rechner der “Außenstelle” kommen tatsächlich zeitlich passende Einträge im Verlauf des Windows Defender, dass postgres potenziell gefährliche Aktionen betreiben würde. Interessanterweise fehlen derartige Hinweise auf den Windows-7-Rechnern, auf denen das Problem sogar meist relativ zeitgleich auftrat, vollkommen. Ist diesbezüglich irgendwas bekannt? Einzigen technischen Unterschiede zwischen den 2 Installationen sind ja die UAC und IPv6 (der Host wird vom ODBC-Treiber wohl auf IPv6 aufgelöst im lokalen Betrieb) normal.

Wir haben erlebt ähnliche Fragen von postgres DLL-Dateien entfernt wird und wir zu dem Schluss, dass Windows Defender der Täter war, aber noch nicht in der Lage, es zu reproduzieren

  1. Konnten Sie den postgres Dateien gelöscht, wenn Ihr Windows-Rechner neu gestartet zu stoppen?
  2. Wie haben Sie das Problem reproduzieren?

Vielen Dank

Wir konnten bisher einzig beobachten, dass es so gut wie nicht mehr vorkam. Bei meinem Chef, der einige Installation hat, trat es noch ein paarmal auf. Dooferweise nicht auf meinem Testsystem. Ich hatte fast das Gefühl, dass seit ich ein Log-Event für das Löschen von Dateien aus dem Postgres-Verzeichnis eingerichtet hatte, dies nicht mehr vorkam.

Den Windows Defender hatten wir auch schon unter Verdacht, lies sich mangels Reproduzierbarkeit oder gleichzeitigem Auftreten auf mehreren System beim Update nicht bestimmt darauf zurückführen.