Editierbares Namensfeld für Einträge (Namenskollision bei gleichem Dateinamen, unterschiedlichem Pfad) #1

Closed
opened 2026-08-18 10:54:06 +02:00 by DasAoD · 2 comments
Owner

Problem

Wird ein Programm hinzugefügt, wird der Anzeigename automatisch aus dem Dateipfad (Dateiname) generiert. Trägt man zwei Einträge mit identischem Dateinamen, aber unterschiedlichem Speicherort ein – z.B. dieselbe .exe, die an zwei verschiedenen Orten liegt (C:\A\programm.exe und C:\B\programm.exe) – erscheint die Meldung, dass ein Programm mit diesem Namen bereits vorhanden ist, obwohl es sich um zwei unabhängig zu überwachende Einträge handelt.

Ursache

Der Eintragsname wird aus dem Dateipfad abgeleitet statt frei vergeben zu werden. Bei gleichem Dateinamen entsteht dadurch zwangsläufig ein Namenskonflikt, unabhängig davon, ob es sich um dieselbe oder unterschiedliche Dateien handelt.

Vorschlag

  • Editierbares Namensfeld beim Hinzufügen/Bearbeiten eines Eintrags einführen
  • Name nicht mehr zwingend 1:1 aus dem Pfad ableiten (Pfad weiterhin als Vorschlag/Default nutzen, aber änderbar)
  • Eindeutigkeit ggf. über vollständigen Pfad statt nur Dateiname prüfen

Workaround (aktuell)

Programmdateien umbenennen, damit Dateinamen eindeutig sind.

## Problem Wird ein Programm hinzugefügt, wird der Anzeigename automatisch aus dem Dateipfad (Dateiname) generiert. Trägt man zwei Einträge mit identischem Dateinamen, aber unterschiedlichem Speicherort ein – z.B. dieselbe .exe, die an zwei verschiedenen Orten liegt (`C:\A\programm.exe` und `C:\B\programm.exe`) – erscheint die Meldung, dass ein Programm mit diesem Namen bereits vorhanden ist, obwohl es sich um zwei unabhängig zu überwachende Einträge handelt. ## Ursache Der Eintragsname wird aus dem Dateipfad abgeleitet statt frei vergeben zu werden. Bei gleichem Dateinamen entsteht dadurch zwangsläufig ein Namenskonflikt, unabhängig davon, ob es sich um dieselbe oder unterschiedliche Dateien handelt. ## Vorschlag - Editierbares Namensfeld beim Hinzufügen/Bearbeiten eines Eintrags einführen - Name nicht mehr zwingend 1:1 aus dem Pfad ableiten (Pfad weiterhin als Vorschlag/Default nutzen, aber änderbar) - Eindeutigkeit ggf. über vollständigen Pfad statt nur Dateiname prüfen ## Workaround (aktuell) Programmdateien umbenennen, damit Dateinamen eindeutig sind.
Author
Owner

Ergänzung: Prozesserkennung betroffen

Bei der Analyse ist aufgefallen, dass das Problem tiefer sitzt als nur die Anzeige: is_process_running() (aktuell watchdog.py, Funktion um Zeile 437) prüft nur den reinen Prozessnamen über psutil.process_iter(['name']). Bei zwei Einträgen mit identischer .exe an unterschiedlichen Speicherorten kann der Watchdog nicht unterscheiden, welche der beiden Instanzen läuft – er hält fälschlich beide Einträge für "läuft", auch wenn nur eine der beiden Dateien tatsächlich gestartet wurde.

Ergänzter Fix-Umfang:

  • is_process_running() vergleicht zusätzlich zum Namen den vollständigen Pfad (proc.exe() gegen den konfigurierten Pfad), mit Fallback auf reinen Namensvergleich falls proc.exe() nicht ermittelbar ist (z.B. AccessDenied bei unterschiedlichen Rechten von Watchdog- und Zielprozess)
  • Getrenntes internes ProcessName-Feld (aus Dateiname abgeleitet, für die Prozesserkennung) vs. frei editierbares Name-Feld (Anzeige)
  • Duplikatsprüfung beim Hinzufügen/Bearbeiten über vollständigen Pfad statt nur über den Namen
  • Migration bestehender INI-Configs (fehlendes ProcessName wird beim Laden aus Path abgeleitet)

Wird auf einem Feature-Branch umgesetzt.

## Ergänzung: Prozesserkennung betroffen Bei der Analyse ist aufgefallen, dass das Problem tiefer sitzt als nur die Anzeige: `is_process_running()` (aktuell `watchdog.py`, Funktion um Zeile 437) prüft nur den reinen Prozessnamen über `psutil.process_iter(['name'])`. Bei zwei Einträgen mit identischer .exe an unterschiedlichen Speicherorten kann der Watchdog nicht unterscheiden, welche der beiden Instanzen läuft – er hält fälschlich beide Einträge für "läuft", auch wenn nur eine der beiden Dateien tatsächlich gestartet wurde. **Ergänzter Fix-Umfang:** - `is_process_running()` vergleicht zusätzlich zum Namen den vollständigen Pfad (`proc.exe()` gegen den konfigurierten Pfad), mit Fallback auf reinen Namensvergleich falls `proc.exe()` nicht ermittelbar ist (z.B. `AccessDenied` bei unterschiedlichen Rechten von Watchdog- und Zielprozess) - Getrenntes internes `ProcessName`-Feld (aus Dateiname abgeleitet, für die Prozesserkennung) vs. frei editierbares `Name`-Feld (Anzeige) - Duplikatsprüfung beim Hinzufügen/Bearbeiten über vollständigen Pfad statt nur über den Namen - Migration bestehender INI-Configs (fehlendes `ProcessName` wird beim Laden aus `Path` abgeleitet) Wird auf einem Feature-Branch umgesetzt.
Author
Owner

Umgesetzt und gemergt über #2.

Umgesetzt und gemergt über #2.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
DasAoD/watchdog#1
No description provided.