Sicherheit für Ordner und Dateien

Lagern Ordner und Dateien auf einer Laufwerkspartion die mit dem NTFS formatiert wurde, so kann festgelegt werden, welche Benutzer oder Gruppen welche Zugriffe auf diese Ordner und Dateien besitzen.
Bei der professionellen Version von Windows XP kann im Eigenschaftsdialog der jeweiligen Dateien und Ordner die erforderlichen Einstellungen vorgenommen werden. Bei der Home-Version hingegen fehlt im Dialog diese Seite Sicherheit. Dadurch wird die Verwendung der schon aus Sicherheitsgründen sinnvolle, man denke nur an die beliebten Viren, Würmer und Trojaner,  von eingeschränkten Benutzerkonten enorm erschwert.

In der Zuhause-Version muss man entweder das tolle Konsolen-Programm cacls.exe oder den abgesicherten Modus von Windows verwenden. Alles nicht gerade komfortabel.
Trotz einigen Untersuchungen ist kein Grund zu finden, warum die Seite Sicherheit nur im abgesicherten Modus verfügbar sein sollte. Es scheint eine reine Schikane von Microsoft zu sein - vielleicht ein Argument zum Erwerb der teuren Professionellen Version?

Der Dialog für die Sicherheitseinstellungen für Dateien liegt in der Datei für Shellerweiterungen mit dem Namen rshx32.dll. Von dieser Datei erzeugt das Programm nun eine veränderte Kopie mit dem Namen rshx32_p.dll. Ferner werden in der Registrierungsdatenbank von Windows die Einträge für rshx32.dll auf rshx32_p.dll geändert und ein Schlüssel eingefügt, der der gepatchten Kopie Glauben macht, Windows liefe im abgesicherten Modus.

So wird's gemacht:


Der Patch ist sofort wirksam. Bei Ordnern haben Sie nun unter Freigabe und Sicherheit eine Seite Sicherheit. Bei Dateien rufen Sie Eigenschaften auf.

Möchten Sie diesen Patch doch nicht haben wollen, können Sie ihn einfach durch ein Klick auf Patch entfernen wieder beseitigen.
Wichtig: Es werden keine originale Dateien verändert oder ersetzt!

Technischer Hintergrund

Auch im normalen Modus von Windows XP Home Edition wird die Datei rshx32.dll geladen und die Funktionen mit den entsprechen Daten versorgt. Erst die Funktion
IShellPropSheetExt::AddPages(...) lässt die Anzeige der Seite Sicherheit scheitern. Untersucht man diese Funktion der rshx32.dll im Debugger, stellt man fest, dass unter dem Registery-Schlüssel
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Option versucht wird, den DWORD-Wert OptionValue zu lesen und auf den Wert 1 zu testen. Dieser Schlüssel ist immer dann vorhanden, wenn Windows XP im abgesicherten Modus ausgeführt wird.
Nun könnte man einfach generell auch für den normalen Modus einen solchen Schlüssel einfügen - was auch gelingt. Jedoch 'denkt' Windows nun, es würde immer im abgesicherten Modus ausgeführt, und zwar mit allen bekannten Einschränkungen der dieser Modus mt sich bringt. Also keine Lösung des Problems.
Das direkte Ändern des Programmcodes hat etliche Nachteile. Zum Beispiel gibt es mehrere Versionen der Datei rshx32.dll je nach installiertem SP, die dann natürlich alle extra behandelt werden müssten. Aber es funktioniert viel einfacher. Der genannte Schlüssel SYSTEM\CurrentControlSet\Control\SafeBoot\Option befindet sich in der Datei als Unicode-String. Dieser wird nun einfach in einer Kopie von rshx32.dll auf  SYSTEM\CurrentControlSet\Control\SafeBoot geändert.  Unter dem geänderten Schlüssel wird noch mit Regedit ein DWORD-Key mit dem Namen OptionValue eingefügt und fertig!
Unter den beiden Schlüsseln für das COM-Object wird abschließend der Name der gepatchten Datei eingefügt.

HKEY_CLASSES_ROOT\CLSID\{1f2e5c40-9550-11ce-99d2-00aa006e086c}
HKEY_CLASSES_ROOT\CLSID\{F37C5810-4D3F-11d0-B4BF-00AA00BBB723}

Mit einem Hex-Editor und mit Regedit kann man also die Änderungen auch zu Fuß durchführen.