28.09.2009, 16:27 Uhr

Windows 7 - was Entwickler über den Vista-Nachfolger wissen sollten (Teil 2)

Ein Überblick über die wichtigsten Neuerungen bei Windows 7 für .NET-Entwickler. Dank des neuen Windows API Code Packs öffnet sich die Windows-Shell für die Programmierung mit Managed Code.
Endlich - ein Managed-Wrapper für die Shell-APIDie Shell-API besaß in der Vergangenheit einen Nachteil. Sie konnte von einer .NET-Anwendung gar nicht oder nur eingeschränkt angesprochen werden, da die COM-Schnittstellen dafür nicht ausgelegt waren. Seit kurzem gibt es von Microsoft das Windows API Codepack für .NET, mit dem sich die Windows-Shell und ihre ,,Bewohner" ansprechen lässt [2]. Das API Codeback besteht aus einer umfangreichen Klassenbibliothek, in der die COM-Schnittstellen der Shell über COM-Interop in Klassen gekaspelt werden, die sie für ein .NET-Anwendung genauso einfach und direkt ansprechbar machen wie die Klassen der .NET-Klassenbibliothek.Abgerundet wird das API Codepack durch über 100 Samples in C# und VB.NET, die alle Bereiche der Windows 7-Shell behandeln, die für Entwickler interessant sind. Ein Trainingskit mit einigen Hands on Labs, PowerPoint-Presentation, Videoclips und allgemeinen Beschreibungen gibt einen Überblick über die wichtigsten neuen Features bei Windows 7 [3]. Hier werden auch etwas anspruchsvollere Themen wie eine Anpassung der Benutzeroberfläche an eine hochauflösende Darstellung, die Benutzerkontensteuerung oder Session-Isolierung bei Windows-Diensten besprochen. Tipps für die Umstellung Wenn es einen Grund gibt, Quellcode für die Ausführung unter Windows 7 anzupassen, hat er etwas mit der Benutzerkontensteuerung zu tun. Bei Windows 7 wurde die Benutzerkontensteuerung (kurz UAC für User Account Control) weiter verfeinert, das Prinzip aber beibehalten. Sie fordert vom Anwender weniger Bestätigungen an, ist in insgesamt vier Stufen granular einstellbar (bei Vista konnte sie nur ein- und ausgeschaltet werden) und wie bei Vista standardmäßig von Anfang an aktiv.Die Grundidee der UAC ist, dass Anwendungen auch unter einem Administratorkonto nicht mehr mit vollständigen Berechtigungen ausgeführt werden, sondern diese vom Anwender explizit bestätigt werden müssen. Anders als früher bei XP legt Windows 7 nach der Installation kein Administratorkonto, sondern ein spezielles Standardbenutzerkonto (auch geschütztes Administratorkonto genannt oder ,,PA" für ,,Protected Administrator") an, unter dem zahlreiche Vorgänge gestattet sind (etwa das Einstellen der Zeitzone), für die in der Vergangenheit Adminberechtigungen erforderlich waren. Beabsichtigt eine Anwendung unter einem PA-Konto eine systemkritische Operationen auszuführen, die explizit Adminberechtigungen erfordert, fordert Windows eine Berechtigungserweiterung in Gestalt der typischen Anmeldedialogbox an, in der Benutzername für ein Adminkonto und das dazugehörige Kennwort eingegeben werden müssen. Während dieser Zeit ,,friert" der Desktop ein, damit Anwendungen, die mit Standardberechtigungen ausgeführt werden, die Anwendungen, die mit erweiterten Berechtigungen ausführen, nicht z.B. per SendKeys-Befehl ,,fernsteuern" könnenDa es nicht empfehlenswert ist die Benutzerkontensteuerung zu deaktivieren, wird es für Entwickler mit Windows 7 praktisch obligatorisch, ihre Anwendungen unter einem Standardbenutzerkonto zu testen und z.B. von direkten Zugriffen auf das Systemlaufwerk oder den HKLM-Schlüssel der Registry abzusehen. Bei aktivierter UAC sind solche Zugriffe entweder nicht zulässig oder sie werden in einen dafür vorgesehenen Bereich des Benutzerprofils umgeleitet (eine in das Stammverzeichnis von C:\ geschriebene Datei wird automatisch in einem Verzeichnis des Benutzerprofils gespeichert und von dort auch wieder gelesen). Um Vista bzw. Windows 7 zu signalisieren, dass eine Anwendung für die Besonderheiten der Benutzerkontensteuerung ausgelegt wurde, müssen Entwickler ihrer Anwendung ein Anwendungsmanifest beifügen (es wird als Vorlage hinzugefügt und in den Projekteigenschaften ausgewählt). Hier kann u.a. festgelegt werden, welche Form der Berechtigungen die Anwendung benötigt. Damit wird u.a. erreicht, dass Zugriffe auf das Dateisystem oder die Registry nicht mehr "virtualisiert" werden. Wird hier z.B. angegeben, dass die Anwendung Administratorberechtigungen erfodert, erscheint gleich nach dem Start ein entsprechender Anmeldedialog. Da bei aktivierter Benutzerkontensteuerung auch ein Administratorkonto mit geringeren Berechtigungen ausgestattet ist, muss die Frage, ob das aktuelle Benutzerkonto administrative Berechtigungen besitzt dadurch geprüft werden, indem festgestellt wird, ob sich der aktuelle Benutzer in der Rolle des Administrators befindet, was immer dann der Fall ist, wenn die Anwendung explizit als Administrator gestartet wurde:WindowsIdentity WinId = Windows.Identity.GetCurrent();WindowsPrincipal WinPr = new WindowsPrincipal(WinId);if (WinPr.IsInRole(WindowsBuiltInRole.Administrator) {}Windows 7 kann kommenBis Vista war es für .NET-Entwickler nahezu unmöglich, die Besonderheiten der Shell in eigene Programmen einzubinden, da die Shell-Schnittstellen nicht kompatibel waren. Für WPF-Anwendungen gab es noch nicht einmal Klassen, welche die Standarddialoge der Shell zugänglich machten. Bei Windows 7 besteht dieses Defizit nicht mehr. Dank dem Windows API-Pack stehen sowohl die bereits mit Vista als auch die neuen Features allen .NET-Anwendungen zur Verfügung.Links[1] http://code.msdn.microsoft.com/Windows7AppQuality [2] http://code.msdn.microsoft.com/WindowsAPICodePack[3] http://www.microsoft.com/downloads/details.aspx?familyid=1C333F06-FADB-4D93-9C80-402621C600E7&displaylang=en Peter Monadiemi


Das könnte Sie auch interessieren