Mittwoch, 8. März 2006
Als Windows-PC-Supporter sollte man es mittlerweile gelernt haben: Lasst die Leute nicht als Administrator arbeiten. Admin sein ist ganz, ganz böse! Und jetzt, wo es die Normalanwender langsam, aber sicher begreifen, ist zwar die Viren-Infektionsgefahr mitsamt Totalschäden etwas gesunken, aber die Probleme nehmen trotzdem zu.
Es scheint auf dieser Welt tausende Windows-Entwickler zu geben, denen man auf der Stelle die Hände abhacken sollte. Damit sie nie wieder eine einzige Zeile Code schreiben können. Ich meine hier nicht die wenigen guten Programmierer, die trotz des grässlichen Betriebssystems aus Redmond etwas anständiges auf die Beine bringen. Ich meine diejenigen Programmierer, die auch heute, im Jahre des Herrn 2006, immer noch nichts von „eingeschränkten Benutzerrechten“ gehört haben, obwohl es diese (in der Fensterwelt) seit mindestens Windows NT 4 gibt. Auch heute noch werden munter Programme auf den Markt losgelassen – billige Shareware-Apps für einige Dollars bis hin zu teurer Forschungssoftware im vier- bis fünfstelligen Kostenbereich – die nur mit Administrator-Privilegien auf Anhieb funktionieren.
C Imagings SimplePCI 6 ist ein solches Programm. Sauteuer, aber als „Limited User“ nur startbar, wenn man gewillt ist, mindestens zwei kryptische Fehlermeldungen wegzuklicken, die etwas von „Starten Sie REGEDIT“ schwafeln.
Was nun? Dass der Hersteller auf meinen Wunsch hin das Produkt debuggt oder neu schreibt, fällt weg. Ebenso ist es nicht vertretbar, den eingeschränkten Benutzer zum Admin zu machen. Auch das Starten der Applikation mittels runas fällt meiner Meinung nach weg, weil ich ja das Administrator-Passwort nicht in einer „world-readable“ Batch-Datei auf dem System herumstehen haben möchte.
Der letzte Ausweg:
Regmon v7.02
Regmon soll uns sagen, auf welche Teile dieser verfluchten Registry (die ist des Teufels, ich sag’s euch) die Applikation zugreifen möchte, es aber aufgrund der eingeschränkten Rechte nicht darf.
Anleitung
- Login in den eingeschränkten Benutzeraccount. Es ist von Vorteil, wenn die betreffende Applikation bereits einmal unter dem Administrator-Account gestartet wurde – manchmal, aber nur manchmal *sing* lösen sich Berechtigungsprobleme dann von alleine, weil mit den Admin-Rechten Schlüssel und Dateien angelegt werden können, auf die der eingeschränkte User Nur-Lesen-Berechtigung hat.
- Anschliessend Regmon herunterladen, das ZIP-File entpacken. Ich lege die Files in C:\TEMP\ ab, da dies auf der Command Line (auch die ist – wenn von Microsoft kommend – des Teufels) rasch erreichbar sein sollen.
- Als nächstes schreibe ich mir eine kleine Batch-Datei, um Regmon mit Doppelklick starten zu können:
cd C:\TEMPrunas /user:administrator /profile regmon.exe
Dies lädt regmon.exe im Kontext des Administrators-Accounts. Nur so ist es dem Tool möglich, alle Zugriffe auf die Registry aufzuzeichnen.
- Regmon läuft und zeichnet ab sofort alle Zugriffe auf die Registry auf. Nicht verwundert sein – in windeseile füllt sich das Fenster, wenn unzählige andere Programme geöffnet sind. Tipp: Bei solche Untersuchungen alle unnötigen Programme schliessen.
- Nun startet man die betreffende Applikation. Regmon sollte wie wild funzeln und viele Zeilen über das neu gestartete Programm anzeigen.
- Da aus den tausenden Zeilen Registry-Zugriffen kein Mensch innert nützlicher Frist schlau wird, benutzen wir die Filter-Funktion von Regmon. Ins erste Feld gibt man den Programmnamen ein (bei mir: Simple*), für das Highlight-Feld empfiehlt sich denied*
- In der Liste sollten jetzt nur noch Einträge angezeigt werden, die dem gewünschten Programm zugeordnet sind. Rot hervorgehoben werden diejenigen Zugriffe auf Registry-Schlüssel, die mit „ACCESS DENIED“ verweigert wurden.
- Da man nun die betreffenden Schlüssel kennt (HKLM ist bspw. die Abkürzung für HKEY_LOCAL_MACHINE *schauder*), kann man deren Berechtigung ändern. Dies geschieht mit dem Microsoft-Tool regedt32.exe, das man selbstverständlich auch im Administrator-Kontext laden muss. Es empfiehlt sich, die oben generierte Batch-Datei zu kopieren und regmon.exe mit regedt32.exe zu ersetzen.
- Man navigiert nun wie ein alter Hase durch die Baumhierarchie (die Eingabe der ersten paar Buchstaben des gesuchten Schlüssel erleichtern die Navigation, weil Regedit zum ersten treffenden Schlüssel springt), und sobald man den betreffenden Eintrag entdeckt hat, klickt man mit der rechten Maustaste darauf und wählt im Kontext-Menu „Berechtigungen“ aus.
- Das nun erscheinende Berechtigungs-Dialogfeld erscheint – viele werden dieses bereits von der Netzwerkfreigabe her kennen. Es verhält sich identisch. Faul wie ich bin gebe ich hier der Gruppe Benutzer Vollzugriff auf den Schlüssel. Natürlich ist es ratsam, der Benutzergruppe nicht gleich Vollzugriff auf die ganze HKLM zu geben – dann könnte man die Sache mit den eingeschränkten Usern gleich sein lassen.
- Dies wiederhole ich für alle in Regmon rot hinterlegten Einträge und starte zwischenzeitlich die verkorkste Applikation neu, um die Änderungen zu testen.
Und irgendwann, nach 10 Minuten bis 2 Stunden kriegt man die Applikation dann hoch, ohne Fehlermeldungen. Und das Ziel ist erreicht.
Wie sehr freue ich mich nach solchen Aktionen doch, zu Hause hinter mein Mac OS X zu sitzen, das weder diese Missgeburt von Registry kennt, noch je Probleme gemacht hat, wenn eine Applikation nur als eingeschränkter Benutzer gestartet wurde. Mac OS X hat halt einen Unix-Unterbau – Motto: everything is a file – wo man keine Registry braucht, sondern mit Flat-Files arbeitet. So ist’s brav.