Skip to content

Which features can ViVeTool toggle?\DE

Lucas edited this page Apr 4, 2022 · 2 revisions

Welche Features kann ViVeTool aktivieren?

ℹ️ Um zu verstehen, was ViVe(Tool) kann und was es nicht kann, müssen wir uns einige Grundlagen der Feature-Verwaltung in Windows genauer anschauen.

Feature IDs

Wie werden sie zugewiesen?

Wie üblich bei großen Projekten ist jeder größeren Änderung in Windows eine numerische Aufgaben-ID zugewiesen. Diese Aufgaben-ID in Microsoft's internem Bugtracker ist identisch mit der, die später eine Feature ID wird. Die IDs, die man in einem bestimmten Windows Build aktivieren kann, sind in verschiedenen (Meta)dateien deklariert, die in den Kompilierungsprozess von Windows eingebunden werden. Das ist der Grund, warum Features von einem Build auf das andere entfernt werden können — eine einfache Änderung der Metadaten reicht aus, um den Code für ein Feature komplett zu entfernen. Der Code für das Feature existiert immer noch im Quellcode, jedoch nicht mehr in der kompilierten Datei.

Wie finden wir sie?

Feature-Referenzen sind direkt in Bibliotheken und Programmen eingebettet, in denen Code für ein bestimmtes Feature vorhanden ist — es gibt keine zentrale Datenbank. In den meisten Fällen werden Features mithilfe von Debugging-Symbolen gefunden. Debugging-Symbole sind Dateien, die von Microsoft veröffentlicht werden, um Entwicklern bei der Fehlersuche in ihren Programmen zu helfen. Diese Dateien enthalten genügend Informationen, um die Namen und die IDs von Features zu bestimmen. Dieser Prozess muss für jede Datei in Windows wiederholt werden, wobei nicht für alle Dateien auch Debugging-Symbole veröffentlicht werden (oftmals fehlen diese zum Beispiel für Dateien, die mit DRM zu tun haben).

Feature-Zustände

Warum bewirkt das Aktivieren bestimmter IDs nichts, obwohl sie in meinem Build vorhanden sind?

Features haben vier mögliche Ausgangszustände, in denen sie ausgeliefert werden können:

  • Standardmäßig Deaktiviert
  • Standardmäßig Aktiviert
  • Immer Deaktiviert
  • Immer Aktiviert

Wenn ein Feature in einem der "Standardmäßig"-Zustände ausgeliefert wird, enthalten die zugehörigen Binärdateien beide Codepfade - einen für den deaktivierten Zustand und einen für den aktivierten Zustand. Wenn man bei diesen Features den Zustand umschaltet, führt das zu sichtbaren Veränderungen.

Wenn ein Feature hingegen in einem der beiden "Immer"-Zustände ausgeliefert wird, hat das Umschalten keine Auswirkung, da kein alternativer Codepfad mehr vorhanden ist.

Genau wie das Vorhandensein eines Features wird auch der Auslieferungszustand zum Zeitpunkt der Kompilierung von Windows festgelegt. Das ist der Grund, warum Features von einem Build auf das andere zum Teil nicht mehr aktiviert werden können — dies kann sogar durch ein einfaches kumulatives Update geschehen.

Unter der Haube von ViVeTool

Was passiert, wenn ich eine Featurekonfiguration ändere?

Wenn ViVeTool verwendet wird, um einen Featuezustand zu ändern, ruft es die relevanten APIs auf, um die Anfrage zu erfüllen. Wenn die Meldung "Successfully set feature configuration" erscheint, bedeutet das lediglich, dass die API die Anfrage verarbeitet hat.

Weder ViVeTool noch die API können garantieren, dass die geänderte Konfiguration eine sichtbare Änderung zur Folge hat. Dies liegt an der zuvor erwähnten dezentralen Natur der IDs, die in einem Windows Build vorhanden sind.

Ich habe ein Tutorial befolgt, aber es ist nichts passiert

Wenn ein Online-Tutorial, in dem ViVeTool verwendet wird, bei dir nicht den gewünschten Effekt hatte, kann es sein dass das Tutorial für eine andere Version von Windows gemacht wurde. Bitte erstelle in diesem Fall keinen Fehlerbericht auf Github, da es hier unsererseits nichts zu beheben gibt. Es handelt sich hier lediglich um ein Resultat der Funktionsweise von Feature IDs, die nicht in unserer Hand liegt.