Vista und die Notwendigkeit eines Manifestes für die UAC

Bei den vorbereiten von Software für Vista (Certified for Vista) ist mir die UAC (User Access Control) untergekommen. Unter Vista verschärft sich das ganze noch einmal gegenüber Windows 2000.

Einen der wichtigsten Punkte möchte einfach mal hier darlegen.
Unsere Software ist so geschrieben, dass ein Admin entsprechende Einstellungen in bestimmten Dateien im Programmverzeichnis ablegen kann und auch Einstellungen vornehmen kann die in HKLM abgelegt werden. Unter anderem dienen diese Dateien/Registry Einstellungen eben zur Kontrolle von Services und IPC. Sie müssen eben in einem allgemein zugänglichem Bereich liegen. Das ist ja nichts ungewöhnliches.

Brav wie wir sind haben wir entsprechende Prüfungen eingebaut und sagen dem Anwender, wenn er keine Rechte hat in HKLM zu schreiben, oder die entsprechenden Dateien im Programmverzeichnis zu ändern, z.B. INI Dateien die mit WritePrivateProfileString geschrieben werden.

Vista ist es nun egal, dass wir brave Entwickler sind. Vista behandelt uns per UAC Richtlinie wie einen Bösewicht und leitet alle Änderungen in den lokalen Bereich des Anwenders. Meine Software hat keine Chance zu erkennen, dass das schreiben in HKLM und den Programm-Datei Ordner eigentlich nicht erlaubt ist.

Man muss also zwingend ein Manifest für die UAC hinzufügen:

<?xml version=“1.0″ encoding=“utf-8″?>
<assembly xmlns=“urn:schemas-microsoft-com:asm.v1″ manifestVersion=“1.0″>
  <trustInfo xmlns=“urn:schemas-microsoft-com:asm.v3″>
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level=“asInvoker“ />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Erst mit diesem Manifest verhält sich meinem Programm wieder so, wie ich es auch erwarte!

Eine gute Anleitung hierfür:
– How To: Tell Vista’s UAC What Privelege Level Your App Requires
http://channel9.msdn.com/Showpost.aspx?postid=211271

Weitere Infos, Dokus und Hilfsprogramme:
– Understanding and Configuring User Account Control in Windows Vista
http://technet.microsoft.com/en-us/windowsvista/aa905117.aspx
– Windows Vista Application Development Requirements for User Account Control Compatibility
http://www.microsoft.com/downloads/details.aspx?FamilyID=BA73B169-A648-49AF-BC5E-A2EEBB74C16B&displaylang=en
– Microsoft Application Verifier
http://www.microsoft.com/downloads/details.aspx?familyid=BD02C19C-1250-433C-8C1B-2619BD93B3A2&displaylang=en
– Microsoft Standard User Analyze
http://www.microsoft.com/downloads/details.aspx?familyid=DF59B474-C0B7-4422-8C70-B0D9D3D2F575&displaylang=en

Mein 8. Award als Deutscher VC++ MVP

Heute habe ich meinen achten MVP-Award als Visual C++ MVP erhalten.

MVP Award 

Meinen ersten Award habe ich im Februar 2000. erhalten.

Steve McConnell: Code Complete – Deutsche AusgabeDer Second Edition

Dieses Buch ist das Beste was ich jemals zum Thema Softwarentwicklung gelesen habe. Zumindest für mich als aktiven Entwickler und Leiter einer Entwicklungsabteilung. Als Entwickler will man am liebsten programmieren, aber das Buch zeigt anschaulich und in einem netten Stil, dass man ohne ein gewisses Mass an Planung, Architektur und Regeln schnell ein Projekt gegen die Wand fährt. Eindringlich wird der gesamt wirtschaftliche Zusammenhang in einem Projekt beleuchtet und ich konnte bei vielen negativen Beispielen nur nicken, weil ich genau in solche Projekt-Fettnäpfchen mit „Erfolg“ rein getreten bin. Es zeigt wie man ein Projekt gut angeht, ohne Software-Entwurf-Overkill zu betreiben. Es gibt gute Tipps wie man sich selbst Coding-Richtlinien geben kann, die einen vor manchem Bug bewahren. Typische Fallen werden angesprochen und die Möglichkeiten sie zu umschiffen werden gezeigt. Es geht darum, bessere, fehlerfreiere, wartungsärmere, billigere Programme zu schreiben. Das Buch gibt viele Anregungen und Ideen, die auch selbst einem alten Hasen das Leben leichter machen können. Und das ganze ist so praxisnah, dass man viele Dinge sofort übernehmen kann. Die meisten Code Beispiele sind in C++ Code geschrieben, aber im Endeffekt ist es komplett programmiersprachenunabhängig. Das Buch ist einem guten humorvollem Stil geschrieben, der nicht langweilig wird. Wenn ich es nicht besser wüsste, würde ich fast sagen, das Buch wurde ursprünglich auf Deutsch geschrieben. Der Text liest sich flüssig ohne Haken. Auch der gut platzierte Humor ist erhalten geblieben. Ein absolutes Muss und den Preis ist es allemal wert.

5 Sterne

http://www.amazon.de/Code-Complete-Deutsche-AusgabeDer-Second/dp/386063593X

Mark Russinovich, David A. Solomon: Microsoft Windows Internals. Windows 2000, Windows XP und Windows Server 2003

„Windows Internals“ von Mark. E. Russinovich, und A. Solomon ist ein Muss für jeden Windows Entwickler, der ein Stück weiter hinter die Kulissen von Windows sehen will oder auch muss. Es ist nicht nur ein fundiertes und gut gegliedertes Werk mit viel Tiefgang in die Hintergrundtechnologie die Windows ausmacht. Manches, was man als Programmierer bisher einfach nur so hin programmierte, wird erst verstanden wenn man dieses Buch gelesen hat. Das Buch eignet sich als Nachschlagewerk wie als „Lesebuch“ um seinen Horizont zu erweitern. Mithilfe der Tools, Werkzeuge und Erklärungen für den Debugger wird man auch in die Lage versetzt schwierigere Probleme und Fehler in eigenen Programmen auf die Spur zu kommen. Aber Achtung: Leichte Kost ist dieses Buch nicht! Es wendet sich an den erfahrenen Programmierer und möchte diesem weitere Einblicke und Kenntnisse vermitteln. Und dieser Aufgabe wird das Buch zu 100% gerecht. Das Buch lohnt sich auch unbedingt für jeden der die dritte Ausgabe von „Inside Microsoft Windows 2000“ im Schrank stehen hat, denn hier werden auch 64bit Technologie, Terminalserver, Hyperthreading angesprochen und die Unterschiede in den Prozessor spezifischen Implementierungen gegeben. Behandelt werden die Technologien der Plattformen Windows 2000, Windows XP und Windows 2003. NT4 findet nur noch in der Einleitung eine Erwähnung. Gegenüber der dritten Ausgabe sind mehr und bessere Beispiele vorhanden und auch die Tools selber, mit denen man das Windows System erkunden kann sind besser erklärt. Die Übersetzung ist erfreulich gut, und englische Fachbegriffe wurden an den Stellen belassen, an denen sie auch Sinn machen. Es wurde weder übermäßig verdeutscht noch zu viel im englischen belassen. Man stellt sich hinterher also nicht die Frage, ob ein rein englisches Buch besser gewesen wäre. Da ich normalerweise fast immer nur „Originale“ kaufe und lese, und mehr durch Zufall auf diese deutsche Ausgabe gestoßen bin, musste ich einiges an meinen Vorurteilen von Übersetzungen korrigieren. Es ist wirklich eine komplett neue Überarbeitung, die noch gelungener erscheint, als der Vorgänger.

5 Sterne

http://www.amazon.de/Microsoft-Windows-Internals-2000-Server/dp/3860639773