ABOUT
IN4OUT Logo
IN4OUT it solutions ist ein Dienstleistungsunternehmen
im Bereich der Informationstechnologie.
 
In diesem Blog berichten IN4OUT-Mitarbeiter über Erlebnisse und Abenteuer rund um Informatik-Probleme und -Lösungen, Web-Design und -Entwicklung, Microsoft Produkte, Social Computing sowie alles andere, was die Gedanken bewegt.

  Feed abonnieren

VPN-Verbindungen auf einen anderen PC übertragen

by Martin Wildi 30. April 2010 16:22

Jedes Mal, wenn ich mein Arbeits-PC neu aufsetze (ok, sooft passiert das nicht, aber es nervt trotzdem), muss ich all meine VPN-Verbindungen zu meinen Kunden wieder einrichten. Nun wurde ich über den Umweg eines Windows XP-TechNet-Beitrages endlich fündig:
Unter Windows 7, Vista und XP sind sämtliche VPN-Verbindungen in einer Datei gespeichert:

rasphone.pbk

Diese befindet sich normalerweise an folgendem Ort:
Windows 7 und Vista:
C:\ProgramData\Microsoft\Network\Connections\Pbk
oder
C:\Users\%username%\AppData\Roaming\Microsoft\Network\Connections\Pbk\_hiddenPbk

Windows XP:
C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Microsoft\Network\Connections\Pbk
oder (wenn die Verbindung nur für die eigene Verwendung gespeichert wurde):
C:\Dokumente und Einstellungen\%username%\Anwendungsdaten\Microsoft\Network\Connections\Pbk

Die Dateien können unter Windows XP, Vista und 7 problemlos untereinander ausgetauscht / kopiert werden. Unter XP werden die Anderungen nach einem Refresh der Netzwerkverbindungen sichtbar, unter Vista und 7 wird ein Neustart benötigt (ohne Neustart werden unter Umständen nicht alle Anderungen angezeigt).



Tablet PCs: Handschrift nicht möglich

by Simon Glumpler 29. April 2010 08:46

Vor kurzen bemerkten wir, dass bei unserem Tablet PC die Funktion Handschrift nicht mehr vorhanden war. Man konnte zwar den Stift noch für Eingaben mit der Bildschirmtastatur gebrauchen, doch die Funktion mit Handschrift zu arbeiten war nicht mehr verfügbar. Eine Woche zuvor war jedoch noch alles in Ordnung gewesen.

Ich suchte im Internet nach Vorschlägen, die Funktion wieder einzuschalten doch wurde einfach nicht fündig. Deshalb entschied ich mich ein bisschen selbst auszuprobieren. Und prompt stiess ich auf folgende Fehlermeldung:

"Handwriting personalization not available for this input language".

Die betrifft in diesem Falle also das deutsche Tastaturlayout. Könnte eine plausible Erklärung sein, denn schliesslich hatte ich das Layout gerade erst von "Englisch (USA)" auf "Deutsch (Schweiz)" gewechselt. Und tatsächlich: Wird das Tastaturlayout gewechselt, muss laut Microsoft zusätzlich die Handschrifterkennung der entsprechenden Sprache installiert werden, möchte man diese Funktion nutzen.

Ansonsten stösst man auf oben genannte Warnung. Um nun die Handschrifterkennung nutzen zu können, muss man nach dem Wechsel des Tastaturlayouts das zum Layout passende Multilingual User Interface (kurz: MUI) installieren, in dem die Handschrifterkennung mitgeliefert ist. Die MUI sind als optionale Updates verfügbar.

Nach der Installation kann einfach über "Start -> Alle Programme -> Zubehör -> Tablet PC -> Anpassen der Handschrifterkennung" die Sprache für die Handschrifterkennung angepasst und zukünftig ohne Probleme genutzt werden.



HP Farblaserdrucker über ThinPrint-Port druckt nur schwarzweiss

by Martin Wildi 18. Februar 2010 15:41

Ein HP Farblaserdrucker ist über einen ThinPrint LPD Port verbunden und als Treiber kommt der HP Universal Treiber zum Einsatz. Nun erkennt dieser den Drucker aber nicht als Farbdrucker, hier ein Screenshot der Drucker-Eigenschaften:

Alle Versuche, dem Treiber manuell Farbdrucke beizubringen, scheitern. Wenn man den Treiber die Druckerkonfiguration abfragen lässt (Register Geräteeinstellungen - Automatische Konfiguration), gibt's nur diese Fehlermeldung:

Was darauf hinweist, dass mit der Kommunikation irgend etwas nicht stimmt. Wenn man nun den Drucker temporär über einen normalen TCP/IP-Port kommunizieren lässt, kann man die Konfiguration abfragen:

Anschliessend kann der Port wieder umgestellt werden, unter Eigenschaften ist die richtige Konfiguration nun sichtbar:



Windows SBS 2003 Setup auf einem HP ProLiant ML350 G6 stürzt mit Bluescreen ab

by Martin Wildi 19. Oktober 2009 09:08

Das Windows Small Business Server 2003 Setup stürzt während der Geräteinstallation mit folgendem Bluescreen ab:

"IRQL_NOT_LESS_OR_EQUAL"
*** STOP: 0x0000000A (0x00000010,0x00000002,0x00000000,0x805527BC)

Dieses Verhalten ist laut HP auf zwei Optionen im BIOS zurückzuführen, welche standardmässig aktiviert sind, aber von SBS 2003 (ohne SP) nicht unterstützt werden. Die Optionen finden sich im BIOS unter

System Options -> Processor Options

und heissen 

Intel Hyper threading -> disablen
Core Disabling -> auf "One Core" setzen

Einstellungen speichern, Server neu starten und SBS 2003 installieren.

Sobald der SBS 2003 auf den aktuellsten Stand gebracht wurde (mit allen SP's etc) können die Optionen wieder aktiviert werden.



Software mittels GPO verteilen: Fehlermeldung "No package in the software installation data in the Active Directory meets this criteria"

by Martin Wildi 23. September 2009 14:45

Wir verteilen u.a. Adobe Acrobat Reader via GPO-Richtlinien. Neulich wollte ich die neuste Version deployen. Ich fügte das vorbereitete msi-Paket zur bestehenden GPO hinzu, da erhielt ich diese Fehlermeldung:


"No package in the software installation data in the Active Directory meets this criteria."

Nach kurzer Recherche fand ich den Hinweis, dass die GPO defekt sein könnte. Also erstellte ich eine neue GPO und fügte das Packet hinzu und siehe da - es klappte.

Da der GPO-Editor nun das neue Packet nicht automatisch als Update der alten Version erkennt, muss ihm dies explizit mitgeteilt werden:



Utility Jobs in BackupExec werden nicht ausgeführt, Status Wartend

by Markus Frey 12. September 2009 17:55

Symptom: Symantec BackupExec 12.5 führt von einem Tag zum anderen keine Utility Jobs, also Inventarisierung, Löschen von Medien etc aus. Die Aufträge bleiben ewig in der Warteschlange mit Status 'Queued'. Sicherungs- und Wiederherstellungsaufträge werden normal ausgeführt. Alle Patches von Symantec sind installiert. Dienste, Server und Bandgerät, ein HP LTO4 Bandwechselgerät, wurden im Laufe des Troubleshooting mehrfach neu gestartet.

Das Durcharbeiten der Symantec Knowledge Base führte schlussendlich durch einen Hinweis 'im Kleingedruckten' des Artikels 308627 zur Lösung:

"The above mentioned problem can occur if for some reason the Backup Exec database has the ServerStatus flag set to indicate that the server is "Paused" but the Backup Exec console is unable to display that status in the Backup Exec User Interface"

backup exec paused

Offensichtlich kann die BE Datenbank "for some reasen" inkonsistent gegenüber der Anzeige im GUI sein - mit dem Wissen, dass der Server 'angehalten' ist, ohne dass der Status GUI entsprechend angezeigt wird, ist das Problem nun schnell gelöst: Server anhalten und gleich wieder starten - und die Aufträge werden wieder ausgeführt!

Bleibt zu hoffen, dass Symantec uns zukünftig mit weniger versteckten Ostereiern beglückt...



Zentrale Ausnahmen sind im Symantec Endpoint Protection-Client nicht sichtbar

by Martin Wildi 10. September 2009 18:13

Wenn für einen Symantec Endpoint Protection-Client Ausnahmen zentral (über den Management Server) definiert werden, sind diese nicht in der SEP-Gui sichtbar:

 

Die konfigurierten Ausnahmen sind auf dem Client aber unter folgendem Registrierungsschlüssel sichtbar:

HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines



Zyxel Modem P-660ME-I V2 funktioniert nicht im Bridge-Modus

by Martin Wildi 7. September 2009 18:14

Die Zyxel Geräte können komfortabel via Web-GUI vom Routing- in den Bridge-Modus umgestellt werden. Dies funktioniert allerdings nicht immer, obwohl der Bridge-Modus korrekt im GUI angezeigt wird.

Es müssen folgende Befehle per Telnet auf dem Gerät ausgeführt werden:

sys general load 1
sys general bridge on
sys general save
sys reboot

Anschliessend kann das Modem problemlos als Bridge benutzt werden.

Das Problem scheint für eine ganze Menge anderer Modelle auch zu exisitieren:

ZyXEL P-652
ZyXEL P-653
ZyXEL P-660
ZyXEL P-661
ZyXEL P-662



HOW TO:Silverlight 3 Applikation im Web

by Nicole Strebel 28. August 2009 16:58

Seit einiger Zeit ist Silverlight ja nun auf dem Markt. Da die IN4OUT gerne auf dem neusten Stand ist, habe wir eine Bilderverwaltung mit Silverlight 3 gemacht, welche an eine Microsoft SQL Datenbank gebunden ist. Um euch alle in die Geheimnisse von Silverlight 3 Entwicklung einzuweihen, schreib ich diesen HOW TO - Eintrag.

So, damit ihr auch etwas über den Ablauf und die Technik von Silverlight wisst, hier noch einen kurzen Abschnitt über die Architektur:

Wie man auf dem obigen Architekturschema sehen kann, befinden sich auf der Serverseite die Datenbank, ein ClassContainer und Webservice. Clientseitig befindet sich dann die eigentliche Silverlight-Applikation. Um das Ganze noch etwas genauer zu veranschaulichen, gebe ich ein Beispiel:>

Was passiert wenn aus der Datenbank Daten geladen werden, welche in einem Datagrid angezeigt werden.

  1. In der Datenbank wird eine ganz normale Stored Procedure geschrieben um die Daten aus der entsprechenden Tabelle zu lesen.
  2. Im Webservice wird der Zugriff auf die Stored Procedures gemacht. Normalerweise machen wir das über die DB-Klassen im App_Code-Ordner gemacht. 3.Da Silverlight keine 
    Datasets und  Datareader kennt, werden dann die Daten in den ClassContainer geschrieben. In diesem ClassContainer befinden sich nur Propertys.  
  3. Auf der Clientseite im Programmcode wird dann der Zugriff auf den Webservice gemacht und die gespeicherten Daten aus dem ClassContainer herausgelesen. Diese Daten können dann wie gewohnt an ein Datagrid, eine Listbox oder weitere Controls gebunden werden.
  4. Diese Daten können dann wie gewohnt an ein Datagrid, eine Listbox oder weitere Controls gebunden werden.

Weiter darf man nicht vergessen, die verschiedenen Packages von Silverlight zu installieren. Siehe dazu HOW TO: UPgrade von Silverlight 2 zu Silverlight3

Zuerst muss ein neues Projekt erstellt werden. Dafür wählt man in der Sprache Visual Basic ein Silverlight-Projekt. Wichtig ist dabei, dass das .NET Framework 3.5  ausgewählt ist. Wenn dann auf OK geklickt wird, erscheint ein weiterer Bildschirm. Visual Studio fragt nach ob die Silverlight-Applikation bereits in eine Webseite integriert werden soll. Wir lassen die Standardeinstellungen und klicken auf OK. So haben wir bereits genau dieselbe Umgebung wie wir es später im i4Portal benötigen. Nun ist das Projekt erstellt und die XAML-Seite Page.xaml geöffnet. Mit F5 kann die Applikation bereits gestartet werden.
Nicht vergessen denn Connectionstring im Web.config anzugeben. In der Datenbank schreiben wir eine Stored Procedure, welche uns alle Bilder aus der Datenbank liest. Diese Bilder wollen wir später in einem Datagrid anzeigen lassen.
Wenn wir mit ASP.NET arbeiten würden, würden wir in der Klasse ImageDB den Zugriff auf die Datenbank machen. Mit Silverlight ist dies alles ein bisschen speziell. Wir müssen einen Webservice machen. Dafür klicken wir mit Rechts auf das Web-Projekt und mit „Add – New item“ wählen wir den „Silverlight-enabled WCF Service“ aus und nennen in SLService. Der Webservice wird generiert und hat bereits eine vorgefertigte Funktion namens „DoWork()“.

Imports System.ServiceModel

Imports System.ServiceModel.Activation

<ServiceContract(Namespace:="")> _

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _

Public Class SLService

    <OperationContract()> _

    Public Sub DoWork()

        ' Add your operation implementation here

    End Sub

    ' Add more operations here and mark them with <OperationContract()>

End Class

Wie bereits in Kapitel 3 erwähnt, kennt Silverlight keine Datareader oder Datasets, deshalb müssen die Daten welche mit dem Webservice ausgelesen werden, in  Propertys zwischen gespeichert werden. Man erstellt also im Web eine normale VB-Klasse und macht aus den einzelnen Spalten die man mit der Stored Procedure ausgelesen hat Propertys. Jetzt wagen wir uns an den Webservice. Auf einer Seite zuvor kann man das Grundgerüst erkennen. Statt der Funktion „DoWork()“ können wir dort einfach unsere Funktion benutzen.

<OperationContract()> _

Public Function GetImagesByCategory(ByVal CategoryID As Integer) As List(Of Category)

' Create Instance of Connection and Command Object

Dim myConnection As New SqlConnection(ConfigurationManager.AppSettings("connectionString"))

myCommand.Parameters.Add(parameterModuleID)

myConnection.Open()

Dim result As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

If result IsNot Nothing Then

Do While result.Read()

Dim cust = New Category With {.ImageID = result.GetInt32(0), .ImageFriendlyName = result.GetString(1), .ImageCreatedDate = result.GetDateTime(11), .ImageFormat = result.GetString(8), .ImageWidth = result.GetInt32(5), .ImageHeight = result.GetInt32(6), .ImageSize = result.GetInt32(9)}

custList.Add(cust)

Loop

End If

Return custList.ToList()

End Function

Dabei wird das <OperationContract()> immer benötigt wenn eine Funktion dann clientseitig erreichbar sein Interessant ist auch der eingekreiste Teil der Funktion. Dort kann man nämlich sehen wie die Ergebnisse aus dem Resultset in die einzelnen Propertys der Klasse geschrieben werden. ">Da nun also der serverseitige Teil abgeschlossen ist, machen wir uns an die Clientseite. Damit wir unsere Daten überhaupt anzeigen können, müssen wir den Webservice zuerst einbinden. Als wir den Webservice erstellt haben, wurde das Web.Config-File automatisch angepasst. Nehmen wir an, dass unser Webservice „SLService.svc“ heisst, sieht es in unserem Web.Config-File folgendermassen aus.


 
<system.serviceModel>

  <behaviors>

   <serviceBehaviors>

    <behavior name="Silverlight.Web.SLServiceBehavior">

     <serviceMetadata httpGetEnabled="true" />

     <serviceDebug includeExceptionDetailInFaults="false" />

    </behavior>

   </serviceBehaviors>

  </behaviors>

  <bindings>

   <customBinding>

    <binding name="customBinding0">

     <binaryMessageEncoding />

     <httpTransport />

    </binding>

   </customBinding>

  </bindings>

  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

  <services>

   <service behaviorConfiguration="Silverlight.Web.SLServiceBehavior"

    name="Silverlight.Web.SLService">

    <endpoint address="" binding="customBinding" bindingConfiguration="customBinding0"

     contract="Silverlight.Web.SLService" />

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

   </service>

  </services>

 </system.serviceModel>

Dabei müssen die eingekreisten Teile des neuen Web.Config-Teil’s geändert werden.


<
system.serviceModel>

<bindings>

<basicHttpBinding>

binding name="ServicesBinding" maxReceivedMessageSize="200000000" maxBufferSize="200000000">

     <readerQuotas maxArrayLength="200000000"  maxStringContentLength="200000000"/>

</binding>

</basicHttpBinding>

</bindings>

  <behaviors>

   <serviceBehaviors>

    <behavior name="Silverlight.Web.SLServiceBehavior">

     <serviceMetadata httpGetEnabled="true" />

     <serviceDebug includeExceptionDetailInFaults="false" />

    </behavior>

   </serviceBehaviors>

  </behaviors>

  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

  <services>

   <service behaviorConfiguration="Silverlight.Web.SLServiceBehavior"

    name="Silverlight.Web.SLService">

    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="ServicesBinding"

     contract="Silverlight.Web.SLService" />

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

   </service>

  </services>

 </system.serviceModel>

</configuration>

Nun können wir testen ob der Webservice funktioniert. Wir rufen den Webservice direkt im Browser auf: Wenn der Webservice wie auf dem linken Screen aussieht, kann er der Silverlight-Applikation problemlos hinzugefügt werden. Der rechte Screen meldet uns einen Fehler bezüglich des Webservices. Auf Fehlersuche geht man sowieso nur über den Browser. Probiert man einen fehlerhaften Webservice einer Silverlight-Applikation hinzuzufügen, kommt immer der Not-Found 404 – Fehler, welcher nicht sehr aussagekräftig ist.
Um den Webservice hinzuzufügen klicken wir mit Rechts auf „References“ und dann auf „Add Service Reference“. Nun können wir die URL des Services direkt angeben oder einfach nach allen Services suchen mit dem Klick auf „Discover“. Jetzt sehen wir dort genau unsere Methode welche auf die Stored Procedures in der Datenbank zugreift.
Unsere Webservice-Referenz nennen wir der einfachheithalber mal „Reference“.

Nachdem wir nun den Webservice hinzugefügt haben, machen wir uns an die XAML-Seite. Dort fügen wir auf der GUI-Seite ein normales Datagrid ein.


<
UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"    

    x:Class="Silverlight.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">

       <Grid x:Name="LayoutRoot">

       <data:DataGrid x:Name="dgImages" Width="500" Height="500"></data:DataGrid>

        </Grid>

</UserControl>                     

Das x:Name ist sozusagen die ID von Objekten in ASP.NET. Danach öffnen wir die Code-Behind-Seite und geben zum Binden der Daten an das Datagrid folgenden Code an. (Der grüne Text bezeichnet dabei Kommentare.)


Partial
Public Class MainPage

Inherits UserControl

Public Sub New()

InitializeComponent()

'*** Hier wird nochmals angegeben, wie der Pfad zum Webservice heisst.

Dim uri As New Uri(Application.Current.Host.Source, "/SLService.svc")

Dim client As New Reference.SLServiceClient("BasicHttpBinding_SLService", uri.AbsoluteUri)

'*** Dieser Handler wird augerufen wenn das Abrufen der Dates

'*** aus der Datenbank über die Klasse,

'*** über den Webservice fertig ist und die asynchrone Methonde(siehe unten)

'*** ausgeführt wurde

AddHandler client.GetImagesByCategoryCompleted, AddressOf client_GetImagesByCategory

'*** Asynchrone Methonde. Die zwei in der Klammer steht dabei für die

'*** benötigten Parameter.

client.GetImagesByCategoryAsync(2)

End Sub

Private Sub client_GetImagesByCategory(ByVal sender As Object, ByVal e As Reference.GetImagesByCategoryCompletedEventArgs)

'*** Wenn alle Daten geladen sind, werden die Resulate an

'*** das Datagrid gebunden.

dgImages.ItemsSource = e.Result

End Sub

End Class              

Wenn  ich die Applikation nun starte, habe ich bereits das gefüllte Datagrid! Juchee!



HOW TO: Upgrade von Silverlight 2 zu Silverlight 3

by Nicole Strebel 27. August 2009 08:37

Seit etwa einem Monat ist Silverlight 3 nun offiziell auf dem Markt. Da viele Silverlight 2 - Applikationen jetzt ja nicht mehr auf dem neusten Stand sind, möchte ich hier eine Anleitung für das optimale Upgrade geben.

Kurz zu meinem Projekt: Ich habe ein Silverlight-Projekt und ein Web-Projekt in einer Solution welche über einen Webservice miteinander kommunizieren.

Zur Vorbereitung auf Silverlight 3 hab ich mir die verschiedenen Silverlight 3 Packages heruntergeladen:

- Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1
- Microsoft Expression Blend 3 + SketchFlow RC
- Silverlight 3 Toolkit

Bevor ich die Packages allerdings installiert habe, habe ich das Silverlight 2 Toolkit, Silverlight 2 SDK, Expression Blend 2 und alles Weitere was Silverlight 2 benötigte deinstalliert.

Aber Achtung: Man soll sich bewusst sein, dass beim Upgrade einer Silverlight-2-zu-3-Applikation, keine Downgrade mehr möglich ist. Wenn die Applikation später dann doch wieder unter Silverlight 2 laufen soll, git es keine Möglichkeit dazu. Deshalb solltem an unbedingt eine Kopie der Applikation vor dem Upgrade machen.

Nachdem alle Silverlight 2 - Komponenten deinstalliert sind, können die Silverlight 3 Komponenten installiert werden. Wenn die Installationen erfolgreich waren, kann nun ein Silverlight 2 PRojekt geöffnet werden. Beim Öffnen erscheint der "Conversion Wizard" vom Visual Studio (siehe unten)

Conversion Wizard

Der Wizard muss vollständig durchlaufen.

Nun muss noch die alte Silverlight.js Datei mit der neuen ersetzt werden. Diese befindet sich standardmässig im Verzeichnis
"C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools".

Eigentlich sollte man das Projekt lauft Microsoft nun kompilieren können. Ich hatte jedoch ein Problem mit dem Webservice, welcher von der Silverlight Applikation zwar gefunden wurde aber die einzelnen Funktionen Fehler aufwiesen. Nach langem Suchen bin ich dann auf eine seltsame lösung gestossen:

1. Der Webservice muss aus der Silverlight-Applikation gelöscht werden. (Beispielname: "SilverlightService")
2. Nun kann der Webservice wieder hinzugefügt werden, aber unter einem anderen Namen. (Beispielname: "SilverlightService_new")
3. Jetzt muss auch dieser Webservice wieder entfernt werden. (Beispielname: "SilverlightService_new")
4. Als vierter Schritt kann nun der Webservice wieder unter seinem ursprünglichen Namen hinzugefügt werden. (Beispielname: "SilverlightService")

Nun tauchen keine Fehler mehr auf und die Applikation kann als Silverlight 3-Applikation kompiliert werden.