Register Filter Pack IFilters with Exchange 2010

Applies to: Exchange Server 2010

Exchange Search uses IFilters to index text content in different file formats. Microsoft Filter Pack includes filters for Microsoft Office 2007 file formats. Installation of the Filter Pack is a pre-requisite for Exchange 2010. The following file name extensions are supported by the filter pack: .docm, .docx, .one, .pptm, .pptx, .vdx, .vsd, .vss, .vst, .vsx, .vtx, .xlsb, .xlsm, .xlsx, .zip. For more information, see 2007 Office System Converter: Microsoft Filter Pack.

After you install the Filter Pack, the included IFilters are registered with Windows Search. To enable Exchange Search to index Office 2007 file formats, you must register the installed IFilters for Exchange 2010 by modifying the registry. You must perform this step after you have installed Exchange 2010 on the server.

What Do You Want to Do?

  • Register Microsoft Filter Pack IFilters manually
  • Register Microsoft Filter Pack IFilters automatically

Register Microsoft Filter Pack IFilters manually

Warning

Incorrectly editing the registry can cause serious problems that may require you to reinstall your operating system. Problems resulting from editing the registry incorrectly may not be able to be resolved. Before editing the registry, back up any valuable data.

  1. Start Registry Editor (regedit).

  2. Locate the following registry subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ExchangeServer\v14\MSSearch\CLSID
    Add the subkeys and values that are listed in the following table to this subkey.

    Subkey Value

    {5A98B233-3C59-4B31-944C-0E560D85E6C3}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\offfiltx.dll

    {DDFE337F-4987-4EC8-BDE3-133FA63D5D85}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\offfiltx.dll

    {F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\offfiltx.dll

    {20E823C2-62F3-4638-96BD-90F4F6784EBC}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\offfiltx.dll

    {312AB530-ECC9-496E-AE0E-C9E6C5392499}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\offfiltx.dll

    {B8D12492-CE0F-40AD-83EA-099A03D493F1}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\ONIFilter.dll

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

    drive:\Program Files\Common Files\Microsoft Shared\Filters\VISFilt.DLL

  3. In each of the subkeys you created in Step 2, create the following string value.

    Value Name Type Value Data

    ThreadingModel

    String (REG_SZ)

    Both

  4. Locate the following registry subkey:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ExchangeServer\v14\MSSearch\Filters
    Add the subkeys and values that are listed in the following table to this subkey.

    Subkey Value

    .docm

    {5A98B233-3C59-4B31-944C-0E560D85E6C3}

    .docx

    {5A98B233-3C59-4B31-944C-0E560D85E6C3}

    .pptm

    {DDFE337F-4987-4EC8-BDE3-133FA63D5D85}

    .pptx

    {DDFE337F-4987-4EC8-BDE3-133FA63D5D85}

    .xlsm

    {F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}

    .xlsx

    {F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}

    .xlsb

    {312AB530-ECC9-496E-AE0E-C9E6C5392499}

    .zip

    {20E823C2-62F3-4638-96BD-90F4F6784EBC}

    .one

    {B8D12492-CE0F-40AD-83EA-099A03D493F1}

    .vsd

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

    .vss

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

    .vst

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

    .vdx

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

    .vsx

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

    .vtx

    {FAEA5B46-761B-400E-B53E-E805A97A543E}

  5. Restart the Microsoft Search (Exchange) service using the Services console or by typing the following command in the Exchange Management Shell.

    Stop-Service msftesql-Exchange -Force; Start-Service MSExchangeSearch
    

Register Microsoft Filter Pack IFilters automatically

  1. Paste the following text into a Notepad file.

    # Copyright (c) 2009 Microsoft Corporation. All rights reserved.
    # THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER.
    # This is a filter registration script to configure Exchange Server 2010 to index Office 2007 file formats. 
    $DLLPath = $env:CommonProgramFiles + "\Microsoft Shared\Filters"
    $CLSIDKey = "HKLM:\SOFTWARE\Microsoft\ExchangeServer\V14\MSSearch\CLSID"
    $FiltersKey = "HKLM:\SOFTWARE\Microsoft\ExchangeServer\v14\MSSearch\Filters"
    
    # Filter DLL Locations
    $officeFilterLocation = $DLLPath + "\offfiltx.dll"
    $onenoteFilterLocation = $DLLPath + "\ONIFilter.dll"
    $visioFilterLocation = $DLLPath + "\VISFilt.DLL"
    
    # Filter GUIDs
    $docxGuid    ="{5A98B233-3C59-4B31-944C-0E560D85E6C3}"
    $pptxGuid    ="{DDFE337F-4987-4EC8-BDE3-133FA63D5D85}"
    $xlsxGuid    ="{F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}"
    $zipGuid     ="{20E823C2-62F3-4638-96BD-90F4F6784EBC}"
    $xlsbGuid    ="{312AB530-ECC9-496E-AE0E-C9E6C5392499}"
    $onenoteGuid ="{B8D12492-CE0F-40AD-83EA-099A03D493F1}"
    $vsdGuid     ="{FAEA5B46-761B-400E-B53E-E805A97A543E}"
    
    # Create CLSIDs
    Write-Host "Creating CLSIDs..."
    
    New-Item -Path $CLSIDKey -Name $docxGuid -Value $officeFilterLocation -Type String
    New-Item -Path $CLSIDKey -Name $pptxGuid  -Value $officeFilterLocation -Type String
    New-Item -Path $CLSIDKey -Name $xlsxGuid  -Value $officeFilterLocation -Type String
    New-Item -Path $CLSIDKey -Name $zipGuid  -Value $officeFilterLocation -Type String
    New-Item -Path $CLSIDKey -Name $xlsbGuid -Value $officeFilterLocation -Type String
    New-Item -Path $CLSIDKey -Name $onenoteGuid -Value $onenoteFilterLocation -Type String
    New-Item -Path $CLSIDKey -Name $vsdGuid  -Value $visioFilterLocation -Type String
    
    # Set Threading model
    Write-Host "Setting threading model..."
    
    New-ItemProperty -Path "$CLSIDKey\$docxGuid" -Name "ThreadingModel" -Value "Both" -Type String
    New-ItemProperty -Path "$CLSIDKey\$pptxGuid" -Name "ThreadingModel" -Value "Both" -Type String
    New-ItemProperty -Path "$CLSIDKey\$xlsxGuid" -Name "ThreadingModel" -Value "Both" -Type String
    New-ItemProperty -Path "$CLSIDKey\$zipGuid" -Name "ThreadingModel" -Value "Both" -Type String
    New-ItemProperty -Path "$CLSIDKey\$xlsbGuid" -Name "ThreadingModel" -Value "Both" -Type String
    New-ItemProperty -Path "$CLSIDKey\$onenoteGuid" -Name "ThreadingModel" -Value "Both" -Type String
    New-ItemProperty -Path "$CLSIDKey\$vsdGuid" -Name "ThreadingModel" -Value "Both" -Type String
    
    # Create Filter Entries
    Write-Host "Creating Filter Entries..."
    
    # Uncomment these if you wish to index these uncommonly exchanged formats
    #New-Item -Path $FiltersKey -Name ".docm" -Value $docxGuid -Type String
    #New-Item -Path $FiltersKey -Name ".pptm" -Value $pptxGuid -Type String
    #New-Item -Path $FiltersKey -Name ".xlsm" -Value $xlsxGuid -Type String
    #New-Item -Path $FiltersKey -Name ".vss" -Value $vsdGuid   -Type String
    #New-Item -Path $FiltersKey -Name ".vst" -Value $vsdGuid   -Type String
    #New-Item -Path $FiltersKey -Name ".vsx" -Value $vsdGuid   -Type String
    #New-Item -Path $FiltersKey -Name ".vtx" -Value $vsdGuid   -Type String
    
    # These are the entries for commonly exchange formats
    New-Item -Path $FiltersKey -Name ".docx" -Value $docxGuid -Type String
    New-Item -Path $FiltersKey -Name ".pptx" -Value $pptxGuid -Type String
    New-Item -Path $FiltersKey -Name ".xlsx" -Value $xlsxGuid -Type String
    New-Item -Path $FiltersKey -Name ".xlsb" -Value $xlsbGuid -Type String
    New-Item -Path $FiltersKey -Name ".zip" -Value $zipGuid  -Type String
    New-Item -Path $FiltersKey -Name ".one" -Value $onenoteGuid -Type String
    New-Item -Path $FiltersKey -Name ".vsd" -Value $vsdGuid   -Type String
    
    Write-Host "Registry subkeys created."
    Write-Host "Please restart Microsoft Search  (Exchange) service from the Services console, or by running stop-service msftesql-Exchange -Force ; start-service MSExchangeSearch "
    
  2. Name the file RegisterMicrosoftFilterPack.ps1, and then save it.

  3. Start Windows PowerShell or the Exchange Management Shell.

  4. Run the script RegisterMicrosoftFilterPack.ps1.

    Important

    Whether Windows PowerShell or Exchange Management Shell allow you to run scripts is determined by the execution policy. For more details, see Script Security.

  5. Restart the Microsoft Search (Exchange) service using the Services console or by typing the following command in the Exchange Management Shell.

    Stop-Service msftesql-Exchange -Force; Start-Service MSExchangeSearch