Quel est le moyen le meilleur/le plus fiable de détecter si Microsoft ActiveSync est installé sur un PC ? Mon programme PC utilise RAPI pour extraire les fichiers de l'appareil et s'il n'est pas installé, il y a une erreur selon laquelle RAPI.dll est introuvable.

3
mikelberger 23 juin 2009 à 17:41

3 réponses

Meilleure réponse

Vous pouvez lire le registre pour détecter si ActiveSync est installé

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services 
4
Jorge Zuanon 23 juin 2009 à 18:11
1
Avertissement : cette entrée de registre persiste lors de la désinstallation d'ActiveSync. Vous obtenez donc un faux positif sur les machines sur lesquelles CE avait été installé mais a maintenant été supprimé. Vérifiez l'existence d'un nom de valeur dans cette clé (par exemple : les valeurs "InstalledDir"/"BuildNumber"/"MajorVersion"/... doivent exister dans cette clé de registre)
 – 
Felix Alcala
14 sept. 2011 à 17:50
@FelixAlcala: Oui, c'est ce que ma réponse vérifie
 – 
user195488
26 mars 2013 à 21:20

Vous pouvez également vérifier si
C:\Windows\System32\rapi.dll existe
Avez-vous essayé d'inclure le fichier rapi.dll avec votre application ?

0
mr R 8 mai 2015 à 15:19
/// <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;
}
7
user195488user195488 30 nov. 2009 à 21:01