Windows ConfidentialGemeinsam genutzte Dateien

Raymond Chen

Haben Sie sich jemals gefragt, woran es liegt, dass Sie beim Deinstallieren eines Programms von Windows® gefragt werden, ob eine Datei gelöscht werden soll, wenn dies andere Anwendungen an der ordnungsgemäßen Ausführung hindern könnte? Die im Bildschirmfoto abgebildete Meldung wird nicht von Windows, sondern vom Deinstallationsprogramm ausgegeben. Die richtige Frage muss daher lauten: „Weshalb zeigt das Anwendungsdeinstallationsprogramm dieses Dialogfeld an?“ Dies ist ein hervorragendes Beispiel dafür, wie einem Benutzer eine Frage gestellt wird, die er nicht beantworten kann. Was hat zu dieser bedauerlichen Lage geführt?

Um Verweiszähler für Dateien zu verwalten, die von mehreren Anwendungen verwendet werden (z. B. die MFC-Laufzeitbibliotheken, die von mehreren nicht miteinander zusammenhängenden Programmen verwendet werden), erstellt das Installationsprogramm einen Eintrag unter dem Registrierungsschlüssel „SharedDLLs“. In diesem Eintrag werden die Datei und ihr Verweiszähler aufgeführt. Wenn für diese Datei bereits ein Eintrag existiert, wird der Verweiszähler erhöht. Wenn der Eintrag noch nicht existiert, wird der Verweiszähler auf 1 gesetzt. Umgekehrt wird bei der Deinstallation des Programms der Verweiszähler verringert, und wenn er 0 erreicht, wird die Datei gelöscht, weil sie von keinem Programm mehr verwendet wird. So lautet jedenfalls die Theorie.

Soll ich sie nun löschen oder nicht?

Soll ich sie nun löschen oder nicht?  (Klicken Sie zum Vergrößern auf das Bild)

Ein ernsthaftes Problem bei diesem Modell besteht darin, dass es davon ausgeht, dass sich jeder an die Regeln hält. Doch die Versuchung zu betrügen ist gewaltig, da die Folgen des Betrugs in der Regel nicht der Betrüger selbst zu spüren bekommt.

Nehmen Sie beispielsweise einmal an, dass es ein Programm gibt, das die MFC-Laufzeitbibliotheken verwendet und dessen Installationsprogramm diese Bibliotheken einfach ins Systemverzeichnis kopiert, ohne den Verweiszähler zu aktualisieren. Wenn dieses Programm später deinstalliert wird, löscht es lediglich die Bibliotheken. Bedenken Sie jetzt, was geschieht, wenn dieses Programm versucht, gemeinsam mit einem Programm zu existieren, das sich an die Regeln hält. Die Ereignisse laufen im Wesentlichen folgendermaßen ab:

  1. Sie installieren das „gute“ Programm: Die Bibliotheken werden installiert, und der Verweiszähler wird auf 1 gesetzt.
  2. Sie installieren das „schlechte“ Programm: Die Bibliotheken werden installiert, aber der Verweiszähler wird nicht geändert.
  3. Sie deinstallieren das „schlechte“ Programm: Die Bibliotheken werden gelöscht.

Dies führt zu dem Ergebnis, dass das „gute“ Programm aufhört zu funktionieren, weil die Bibliotheken nicht mehr vorhanden sind.

Hier ein weiteres Szenario:

  1. Sie installieren das „gute“ Programm: Die Bibliotheken werden installiert, und der Verweiszähler wird auf 1 gesetzt.
  2. Sie installieren das „schlechte“ Programm: Die Bibliotheken werden installiert, aber der Verweiszähler wird nicht geändert.
  3. Sie deinstallieren das „gute“ Programm: Der Verweiszähler wird auf 0 verringert, und die Bibliotheken werden gelöscht.

Dieses Szenario führt zu dem Ergebnis, dass das „schlechte“ Programm aufhört zu funktionieren.

Die Personen, die das „gute“ Programm geschrieben haben, haben sich Folgendes gedacht: „Wir können zwar nicht verhindern, dass uns das „schlechte“ Programm Ärger macht, aber wir können wenigstens versuchen, dem „schlechten“ Programm keinen Ärger zu machen“. Deshalb halten sie an, wenn sie dabei sind, eine Datei zu löschen, und lassen die Warnmeldung anzeigen: „Ich habe vor, eine Datei zu löschen. Ist das in Ordnung?“ Wenn auf dem Rechner ein „schlechtes“ Programm vorhanden ist, das diese Datei verwendet, bekommt dieses „schlechte“ Programm jetzt Ärger. Wenn Sie ein solches „schlechtes“ Programm besitzen, sollten Sie an dieser Stelle auf „Nicht löschen“ klicken. Gut, das ist nicht der genaue Wortlaut der Warnmeldung, aber Sie wissen, von welchem Dialogfeld ich rede. Selbst der legendäre Jeffrey Richter hat 1996 in einem Artikel des Microsoft Systems Journal diese Vorgehensweise empfohlen.

Leider wird durch diesen Ansatz dem Benutzer eine Frage gestellt, die er einfach nicht beantworten kann.

Natürlich müssten alle Kontrollfanatiker, die verlangen, dass Windows ihnen die Möglichkeit bietet, einfach alles außer Kraft setzen zu können, angesichts dieses Dialogfelds in tosenden Beifall ausbrechen. Die Deinstallationsprogramme der Welt bieten Ihnen Datei für Datei Kontrolle über den Deinstallationsprozess. Seien Sie also vorsichtig, worum Sie bitten – Ihr Wunsch könnte in Erfüllung gehen.

Raymond Chen befasst sich auf seiner Website „The Old New Thing“ und in seinem gleichnamigen Buch mit der Geschichte von Windows und mit der Win32-Programmierung. Er fragt sich, ob er es noch miterleben wird, dass die Kernfusion genutzt wird.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.