Allgemein

Ein Windows Mobile ABC: C wie Certs.cab

Seit Windows Mobile 5 gibt es ein Zertifikatsbasiertes Sicherheitssystem das den Anwender sowie das Gerät davor bewahren soll, das beliebige Programme vollen Zugriff auf sämtliche Funktionen und Informationen des Gerätes zugreifen können. Im Unternehmenseinsatz kommt zusätzlich hinzu dass die Geräte damit vor unerlaubter Softwareinstallation geschützt werden können.

Für den Entwickler gilt daher:

Bei der Verwendung von einige APIs sowie beim entwickeln bestimmte Arten von Applikationen kommt man nicht drum rum seine Projektausgabe mit einem digitalen Zertifikat auszustatten.

Hinzukommt noch das es nicht reicht ein beliebiges Zertifikat zu verwenden, nein es muss natürlich auch eine Vertrauensstellung auf dem Gerät vorliegen, sonst würde die ganze Nutzung von Zertifikaten natürlich keinen Sinn ergeben.

Wenn man nicht gerade eine Unternehmenseigene Zertifizierungsstelle (CA) hat auf die man ständig und kostenlos zugreifen kann und man daher auf externe Zertifizierungsstellen oder das Mobile2Market (http://www.mobile2market.net) bzw. Windows Mobile Marketplace (http://developer.windowsmobile.com/Marketplace.aspx) angewiesen ist für den späteren Wirkeinsatz der Software muss man währen der Entwicklungszeit also mit Testzertifikaten arbeiten.

Hier hilft uns natürlich auch wieder das Windows Mobile SDK.

Und zwar unter dem Ordner: „%PROGRAM FILES%Windows Mobile 6 SDKToolsSecuritySDK Development Certificates“.

Hier liegt die “Certs.cab” Installationsdatei die wir auf das Gerät kopieren und dort installieren können.

Diese CAB Datei installiert und konfiguriert die dementsprechenden Zertifikate und Rollen auf dem Gerät.

Damit haben wir die SDK Zertifikate schon mal auf dem Gerät. Um jetzt noch unsere Visual Studio Ausgab mit den entsprechenden Zertifikaten signieren zu können müssen wir die Zertifikate noch auf dem Entwicklungsrechner installieren.

Am einfachsten geht das meiner Meinung nach über die PFX Dateien.

Einfach per Doppelklick starten und die nachfolgenden Dialoge mit den Default werten bestätigen.

Im Visual Studio kann man dann in den Projekteigenschaften unter „Authenticode-Signatur“ die Signierung aktivieren und ein Zertifikat auswählen.

sign

– Patrick

Windows Mobile

Ein Windows Mobile ABC: B wie Batterie

Manchmal scheint man es als Entwickler wirklich zu vergessen, aber Windows Mobile Geräte sind Batterie betriebene Geräte.
Ich habe die Tage angefangen einen Windows Mobile Dienst zu schreiben der automatisch T-Mobile HotSpots sucht und sich dementsprechend mit den hinterlegten Accountdaten anmeldet.
Gut, der Dienst ist bei weitem noch nicht fertig, und zu Debugzwecken habe ich natürlich eine Endlosschleife eingebaut (mit einem Sleep von 5 Sekunden…), aber trotzdem habe ich den Dienst auf meinem Gerät durchgehend laufen.
Das durchgehende starten einer WLAN Netzsuche verhindert natürlich den Standby des WLAN Treibers und so zieht mein Dienst mir relativ schnell die Batterie leer.
Das Ende vom Lied war natürlich das mein Gerät mitten auf der Autobahn keine Power mehr hatte. Die Strecke war so einfach das man dafür wirklich kein NAVI brauchte, aber es war schon deprimierend das man, um den FastFood Dealer seiner Wahl 🙂 zu finden, aus dem Fenster schauen musste und nicht sein Windows benutzen konnte.
Das nächste Feature dieses Dienstes wird daher eine Art "Schwellwert Einstellung" sein, ab welchen Batterielevel die Suche nicht mehr automatisch fortgeführt werden soll. Das werde ich wohl noch in dem einenen oder anderen Client nachziehen.
 
Die API der Wahl wäre dazu wohl die Funktion "GetSystemPowerStatusEx" oder noch besser die Verwendung des "State und Notification Brokers".
Die benötigten Deklarationen findet man in der "snapi.h" unter "PowerBatteryStrength" & "PowerBatteryState".
 
– Patrick
 
 
Windows Mobile

Ein Windows Mobile ABC: A wie AllKeys

 
Wer in Zukunft seine Anwendung im Windows Mobile Marketplace http://developer.windowsmobile.com/Marketplace.aspx verkaufen möchte oder eine "Designed for Windows Mobile" Zertifizierung erhalten möchte darf in Zukunft kein GAPI verwenden.
GAPI ist die, mit dem Pocket PC 2003 eingeführte, API mit der man schnelle Grafikoperationen auf dem Display ausführen kann.
Seit Windows Mobile 5 gibt es dafür allerdings DirectDraw bzw. Diret 3D Mobile und die GAPI ist damit eigentlich überflüssig.
 
Schön, was hat das nun mit der im Titel verwendeten "AllKeys" Funktion zu tun?
 
Ein Vorteil der GAPI war es das man mit Ihr auf ziemlich einfache Art und Weise alle Hardwarebuttons des Gerätes in seiner Applikation abfangen konnte.
Ein simpler Funktionsaufruf und schon hatte man sein Ziel erreicht. Dies wird mit Windows Mobile 6.5 nun wohl aber nicht gehen.
Als Alternative bietet sich nun aber die Funktion "AllKeys" an. GAPI selbst hat intern diese Funktion auch schon benutzt, daher ist es eigentlich kein großer Umstieg.
Im MSDN Online findet man die Funktion derzeit noch nicht dokumentiert, aber das wird sicherlich bald kommen.
 
Zu finden ist die Funktionsdeklaration aber auch jetzt schon in der "winuser.h" und kann somit auch schon für aktuelle Projekte die noch nicht auf WM 6.5 basieren verwendet werden.
 
Will man die Tasten abfangen ruft man einfach AllKeys(true) auf, und wenn man fertig ist das ganze mit AllKeys(false) beenden.
Die Nachricht über einen Tastendruck erhält man wie gewohnt über WM_KEYUP und WM_KEYDOWN mit dem KeyCode als WPARAM.
 
Eine Liste der KeyCodes findet man natürlich auch im MSDN: http://msdn.microsoft.com/en-us/library/bb431750.aspx
 
– Patrick