Exchange Autodiscover: Wie wird die Autodiscover-URL ermittelt?

Problem:
Für mich hat sich die Frage gestellt, wie der Outlook-Client (gerade außerhalb der Organisation über Outlook Anywhere) die Autodiscover FQN bekommt, die er anfragt um seine Autodiscover-Informationen zu bekommen.

Lösung:
Der Outlook-Client geht hier nach einem fest definierten Schema vor, dass man wissen sollte, da man sonst nicht versteht, warum der Client keine Autodiscover-Informationen erhält.

WICHTIG VORWEG: Als Mail-Domäne nimmt der Client nicht die Windows-Domäne sondern die Mail-Domäne der PRIMÄREN Mail-Adresse des Benutzers
Das kann Probleme machen, wenn man einem Benutzer nur eine interne Mailadresse gibt oder dieser verschiedene externe Mail-Adresse zugewiesen bekommen hat. Vor allem, wenn der Benutzer per Outlook Anywhere zugreift und keinen SCP erreichen kann und somit die Autodiscover-URLS abklappert.

Folgenden Ablauf durchläuft der Client für das Autodiscover-Ermittlung:
1.) Abfrage SCP (Service Connection Point) aus dem AD (ClientAccessServer AutodiscoverServiceInternalURI)
2.) Anfrage auf https://mail-domäne/autodiscover/autodiscover.xml
3.) Anfrage auf https://autodiscover.mail-domäne/autodiscover/autodiscover.xml
4.) Anfrage auf http://autodiscover.mail-domäne/autodiscover/autodiscover.xml
5.) Abfrage eines SRV-Records
6.) Verwendung der lokalen autodiscover.xml, soweit bereits vorhanden

Quelle: SebastianHetzel.net: Exchange Autodiscover

Exchange 2007 - 2013 Migration: Outlook verlangt ständig Anmeldedaten (Credential Popup) für Öffentliche Ordner

Problem:
Ich bin gerade bei einer Migration von Exchange 2007 auf Exchange 2013.
Da die Migration im laufenden Betrieb durchgeführt wird und Exchange 2013 nicht direkt auf die Öffentlichen Ordner von Exchange 2007 zugreifen kann, musste ich die Discovery-Mailbox-Variante wählen um den Zugriff der umgezogenen Clients zu ermöglichen (siehe Quelle unten).
Dabei ist aufgefallen, dass alle umgezogenen Benutzer auf Exchange 2013 mehrmals am Tag die Verbindung zum Öffentlichen Ordner auf Exchange 2007 verloren haben und sich ein Anmeldefenster dazu öffnet. Das war sehr lästig und ich habe viel an den IIS-Einstellungen vom alten und neuen Exchange versucht - alles erfolglos!
Daraufhin habe ich herausgefunden, dass ich Outlook über die Exchange-Proxy-Einstellungen zu einem TCP-Connect "zwingen" kann, indem ich dort den Haken "Bei schneller Verbindung zuerst über HTTP verbinden" entferne. Damit versucht Outlook erst eine TCP-Verbindung und dann eine HTTP-Verbindung. Das klappt super gut und die Verbindung zum alten Server geht über RPC/TCP und zum neuen über RPC/HTTP.
Das nächste Problem: Das Autodiscover überschreibt meine Einstellungen und setzt mir den Haken immer wieder neu!!!

Lösung:
Man kann mittels Registry eine Policy setzen, wodurch man die Einstellung dauerhaft festsetzen kann.
Hier die Policy, wie ich Sie aktuell für Outlook 2007 - 2013 erfolgreich einsetze:

Key : HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\xx.0\Outlook\RPC
Value Name : proxyserverflags
Value Type : REG_DWORD
Value : 39 (27h)


Wobei xx für die jeweilige Office-Version steht (12 = Office 2007, 14 = Office 2010, 15 = Office 2013, 16 = Office 2016)

Das ist zwar nicht die sauberste Lösung, da ich eigentlich das Problem am Exchange 2007 nicht gelöst habe doch will ich gerade nicht die Konfiguration des alten Servers so extrem abändern, dass mir etwas anderes "um die Ohren fliegt". Außerdem wird der alte Exchange-Server nach der Migration sowieso abgeschaltet und damit erledigt sich dann auch das Problem.

Quelle für Flags: getadmx.com: RPC/HTTP-Verbindungs-Flags

Quelle Discover Public Folder 2013: Technet: Konfigurieren älterer öffentlicher Ordner, wenn sich die Postfächer der Benutzer auf Exchange 2013-Servern befinden


Office 2013 / 2016: Microsoft Office Picture Manager kostenlos nachinstallieren

Problem:
Meine User beschweren sich, dass bei Office 2013/2016 kein Office Picture Manager mehr dabei ist und dieser so komfortabel zu bedienen war.

Lösung:
Man kann den Microsoft Office Picture Manager kostenlos und ohne Lizenz-Probleme nachinstallieren.
Die Idee ist ganz einfach...der Picture Manager ist auch im Microsoft SharePoint Designer 2010 beinhaltet und dieser ist kostenlos im Internet erhältlich.

Folgende Vorgehensweise zur Installation des Picture Managers:
- Microsoft SharePoint Designer 2010 herunterladen (32-Bit-Version): Microsoft SharePoint Designer 2010 (32-Bit)
- Installation angepasst durchführen und alle Punkte deaktivieren außer dem Office Picture Manager


Nach der Installation steht der Picture Manager zur Verfügung. Sollte ein Lizenz-Audit von Microsoft stattfinden, wird nur der SharePoint-Designer ausgelesen und dieser ist kostenlos erhältlich.
Ich weiß, dass die Installationsroutine ca. 400 MB umfasst, aber was tut man nicht für das Wohl seiner User!

Quelle:
IT-Logbuch: Microsoft Picture Manager kostenlos nachinstallieren

VB.NET 2015 : Vorlagen Manager für Office Anwendungen

Ich habe mal wieder eine kleine Fingerübung in VB.NET gemacht, rausgekommen ist ein Vorlagen Manager für alle Arbeitsgruppen Vorlagen unabhängig von der Anwendung. Ob das Sinn macht oder nicht ist egal es war mal wieder eine gute Übung für mich. Wenn man zur Laufzeit Elemente erstellen möchte gibt es einiges zu beachten. In meinem Beispiel erstelle ich eine TabPage im TabControl und füge ein ListView Element hinzu.

Formular
Vorlagen_Manager

Benötigt
Imports System.IO
Deklaration für den Pfad in der Klasse:
Dim varPath As New DirectoryInfo("pfad zu den Arbeitsgruppen Vorlagen")
Sub für das erstellen zur Laufzeit :
Private Sub AddTabPage()
    Dim tempPage As TabPage
    Dim LView As ListView
    For Each oSubDir As DirectoryInfo In varPath.GetDirectories
        tempPage = New TabPage(oSubDir.Name)
        LView = New ListView()
        With LView
                .Dock = DockStyle.Fill
                .View = View.Details
                .Name = "lvw_" & oSubDir.Name
                .GridLines = True
        End With
        tempPage.Controls.Add(LView)
        AddHandler LView.DoubleClick, AddressOf OpenFile_DoubleClick
        AddHeader(LView)
        If oSubDir.GetFiles.Count > 0 Then
                tab_ctl.TabPages.Add(tempPage)
                GetFilesFromFolder(oSubDir, LView)
        End If
    Next
End Sub
Um das erstellte Listview auch mit einem onKlick oder wie in meinem Fall DoppelKlick zu versehen wird AddHandler benötigt.
Dieser verweist in meiner Sub auf die Funktion OpenFile_DoubleClick
Private Sub OpenFile_DoubleClick(ByVal sender As Object, ByVal e As EventArgs)
        Dim lv As ListViewItem = CType(sender, ListView).FocusedItem
        Dim App As String = UCase(lv.SubItems(1).Text.ToString)
        Dim Template As String = lv.SubItems(2).Text.ToString
        Dim var_proc_start As String
        Select Case App
            Case "WO"
                var_proc_start = "winword.exe"
            Case "EX"
                var_proc_start = "excel.exe"
            Case "PP"
                var_proc_start = "powerpnt.exe"
            Case Else
                var_proc_start = Nothing
        End Select
        If Not (var_proc_start Is Nothing) Then
            Process.Start(Chr(34) & OfficePfad & var_proc_start & Chr(34), "/N " & Chr(34) & Template & Chr(34))
        End If
    End Sub
Hier werden die Header für das ListView Element geschrieben
Private Function AddHeader(ByVal Lstview As Object)
  Dim HEAD1, HEAD2, HEAD3 As ColumnHeader
  HEAD1 = New ColumnHeader
  HEAD2 = New ColumnHeader
  HEAD3 = New ColumnHeader
  With HEAD1
          .Text = "Vorlage"
          .TextAlign = HorizontalAlignment.Left
          .Width = 650
  End With
  With HEAD2
          .Text = "Typ"
          .TextAlign = HorizontalAlignment.Center
          .Width = 50
  End With
  With HEAD3
          .Text = "Pfad"
          .TextAlign = HorizontalAlignment.Left
          .Width = 5
  End With
  With Lstview
          .Columns.Add(HEAD1)
          .Columns.Add(HEAD2)
          .Columns.Add(HEAD3)
  End With
End Function
Datei Typ ermitteln :
Private Function Get_File_Type(ByVal File As FileInfo)
        Dim FTYPE As String
        Select Case File.Extension
            Case ".dotx"
                FTYPE = "WO"
            Case ".xltx"
                FTYPE = "EX"
            Case ".potx"
                FTYPE = "PP"
            Case Else
                FTYPE = "NA"
        End Select
        Return FTYPE
    End Function
Dateien in das Listview Element eintragen :
Private Sub GetFilesFromFolder(ByVal Folder As DirectoryInfo, ByVal oLiVi As Object)
        For Each File As FileInfo In Folder.GetFiles
            If File.Name.Substring(0, 1) = "~" Then
                Exit Sub
            End If
            Dim Item As New ListViewItem(File.Name)
            Item.SubItems.Add(Get_File_Type(File))
            Item.SubItems.Add(File.FullName)
            oLiVi.Items.Add(Item)
        Next
    End Sub
Form Load :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   AddTabPage()
End Sub


Es gibt bestimmt schönere Weg oder auch andere die besser wären, wenn das so ist schreibts mir in die Kommentare. Ich bin bis jetzt zufrieden es funktioniert ;-)


Windows 10 - Feature Update 1607 - Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert

Problem : Nach dem installieren des Feature Updates 1607 in Windows 10 (64Bit) erscheint diese Meldung "Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert" nach der Anmeldung des Benutzers.

Lösung : Scheinbar tritt dieses Problem auf wenn Microsoft Office auf dem Client installiert ist. Eine Reparatur der Office Installation hat das Problem bei mir gefixt. In meinem Fall war ein Office 2016 (32Bit) installiert, der Fehler tritt aber scheinbar bei alle Office Versionen auf.
“Das Alzheimer-Gesetz der Programmierung: Wenn du einen von dir vor zwei Wochen geschriebenen Code ansiehst, kommt es dir vor als hättest du ihn noch nie gesehen.”
Dan Hurvitz – Software-Entwickler