Question

What is the best/most reliable way of detecting if a PC has Microsoft ActiveSync installed? My PC program uses RAPI to get files off of the device and if it isn't installed there is an error that RAPI.dll cannot be found.

Was it helpful?

Solution

You can read the registry to detect if ActiveSync is installed

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services 

OTHER TIPS

/// <summary>
/// Checks to see if ActiveSync/Windows Mobile Device Center
/// is installed on the PC.
/// </summary>
/// <param name="syncVersion">The version of the synchronization tool installed.</param>
/// <returns>True: Either ActiveSync or Windows Mobile Device Center is 
/// installed. False: version is null
/// </returns>
private static bool isActiveSyncInstalled(out Version syncVersion)
{
            using (RegistryKey reg = 
                Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows CE Services"))
            {
                if (reg == null)
                {
                    syncVersion = null;
                    return false;
                }

                int majorVersion = (int)reg.GetValue("MajorVersion", 0);
                int minorVersion = (int)reg.GetValue("MinorVersion", 0);
                int buildNumber = (int)reg.GetValue("BuildNumber", 0);

                syncVersion = new Version(majorVersion, minorVersion, buildNumber);
            }
            return true;
}

You can also check if
C:\Windows\System32\rapi.dll exists
Have you tried to include rapi.dll file with your application ?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top