Sample – Detecting installed Outlook and its bitness
Here is a sample which detects the installed Outlook versions and their bitness.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace DetectOutlook
{
class Program
{
public enum BinaryType : uint
{
SCS_32BIT_BINARY = 0, // A 32-bit Windows-based application
SCS_64BIT_BINARY = 6, // A 64-bit Windows-based application.
SCS_DOS_BINARY = 1, // An MS-DOS – based application
SCS_OS216_BINARY = 5, // A 16-bit OS/2-based application
SCS_PIF_BINARY = 3, // A PIF file that executes an MS-DOS – based application
SCS_POSIX_BINARY = 4, // A POSIX – based application
SCS_WOW_BINARY = 2 // A 16-bit Windows-based application
}
[DllImport("kernel32.dll")]
static extern bool GetBinaryType(string lpApplicationName, out BinaryType lpBinaryType);
static void Main(string[] args)
{
string sLine = string.Empty;
Console.WriteLine(sLine);
if (Environment.Is64BitOperatingSystem)
Console.WriteLine("OS Bitness is 64 bit");
else
Console.WriteLine("OS Bitness is 32 bit");
if (Environment.Is64BitProcess)
Console.WriteLine("This Application's process Bitness is 64 bit");
else
Console.WriteLine("This Application's process Bitness is 32 bit");
DetectbyFilePath();
string x;
x = "";
}
static void DetectbyFilePath()
{
List<string> filePaths = new List<string>();
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\root\Office16\outlook.exe"); // 64-bit OS, 32-bit Outlook (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\Office16\outlook.exe"); // 64-bit OS, 32-bit Outlook (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\Office16\outlook.exe"); // OS == Outlook bitness (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\root\Office16\outlook.exe"); // OS == Outlook bitness (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\root\Office15\outlook.exe"); // 64-bit OS, 32-bit Outlook (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\Office15\outlook.exe"); // 64-bit OS, 32-bit Outlook (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\Office15\outlook.exe"); // OS == Outlook bitness (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\root\Office15\outlook.exe"); // OS == Outlook bitness (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\root\Office14\outlook.exe"); // 64-bit OS, 32-bit Outlook (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe"); // 64-bit OS, 32-bit Outlook (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\Office14\outlook.exe"); // OS == Outlook bitness (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\root\Office14\outlook.exe"); // OS == Outlook bitness (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\root\Office12\outlook.exe"); // 64-bit OS, 32-bit Outlook (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\Office12\outlook.exe"); // 64-bit OS, 32-bit Outlook (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\Office12\outlook.exe"); // OS == Outlook bitness (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\root\Office12\outlook.exe"); // OS == Outlook bitness (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\root\Office11\outlook.exe"); // 64-bit OS, 32-bit Outlook (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\Office11\outlook.exe"); // 64-bit OS, 32-bit Outlook (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\Office11\outlook.exe"); // OS == Outlook bitness (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\root\Office11\outlook.exe"); // OS == Outlook bitness (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\root\Office10\outlook.exe"); // 64-bit OS, 32-bit Outlook (C2R)
filePaths.Add(@"C:\Program Files (x86)\Microsoft Office\Office10\outlook.exe"); // 64-bit OS, 32-bit Outlook (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\Office10\outlook.exe"); // OS == Outlook bitness (MSI)
filePaths.Add(@"C:\Program Files\Microsoft Office\root\Office10\outlook.exe"); // OS == Outlook bitness (C2R)
string sLine = string.Empty;
foreach (string sFile in filePaths)
{
if (File.Exists(sFile))
{
BinaryType type;
GetBinaryType(sFile, out type);
sLine = string.Format("Outlook Bitness: {0} File Path: {1}", type, sFile);
Console.WriteLine(sLine);
System.Diagnostics.Debug.WriteLine(sLine);
}
}
}
}
}