Ez megint egy tanulságos hibakeresés volt. A Google Calendar Sync programot használom most a naptáraim szinkronizálására. A Windows 8 telepítés után azonban az eddig tökéletesen működő alkalmazásban a Google fiókot fel lehetett venni, azonban a szinkronizáció egy ideig gondolkodott, majd a következő hibaüzenetet adta:
Ezt meg mi lelte? A -2146959355 értéke hexadecimálisban FFFFFFFF80080005, erre a hibaüzenetre rákeresve pedig a CO_E_SERVER_EXEC_FAILURE hibakódot kapjuk. Ez még túl sokat nem segített.
Hasonló problémák
A Calendar Sync programhoz meglepően sok fórum és blogbejegyzést találni, amik különböző hibákról számolnak be. Jó párat végignéztem, de az én gondomat nem oldották meg:
- Google Calendar Sync error 2147221164: ez egy másik hibakód (80040154 –> Class not registered), de itt is elég sok tanács van mindenféle szinkronizációs hibára.
- Unable to sync with Outlook; error -2147319779: itt azt javasolták, hogy töröljük az Office 15 által felrakott registry kulcsokat, de nekem ez sem segített.
- johanneswerner86 / mySync: ezt javasolták alternatív programként, de én jobb szerettem volna a Google programját újra működésre bírni.
- Volt egy olyan ötlet is, hogy az Outlook Add-Ins menüjében aktiváljuk kézzel a Calendar Sync bővítményét, de a változatosság kedvéért ez sem segített.
A hiba vizsgálata
Nem maradt más hátra, részletesebben meg kellett nézni a kapott hibát. Szerencsére volt egy kapcsolódó bejegyzés az eseménynaplóban:
Log Name: System Source: Microsoft-Windows-DistributedCOM Event ID: 10010 Description: The server {0006F03A-0000-0000-C000-000000000046} did not register with DCOM within the required timeout.
Jaj. Nem szeretem a COM/DCOM hibákat:) A DCOM konzolt elindítva meg is lett a hivatkozott alkalmazás:
“{0006F03A-0000-0000-C000-000000000046} is Microsoft Outlook Command Button Control”
Mondjuk logikus, a Calendar Sync alkalmazásnak valahogy el kell érni az Outlookot, annak pedig egy COM-os felülete van, azon keresztül lehet bővítményeket írni hozzá.
A Calendar Sync egyébként ezekből a fájlokból áll:
Az exe maga a szinkronizációt végző alkalmazás, a két DLL pedig egy-egy 32 és 64 bites Outlook bővítmény (Add-In). Gyanús volt, hogy azzal van a gond, hogy 64 bites Office van fent a gépemen, bár elvileg a Calendar Sync azt is támogatja (bár ezt nem volt egyszerű megtalálni): Google Calendar Sync upgrades Outlook 2010 support.
Hogy ellenőrzünk ilyen DLL-betöltési problémát? Hát persze, hogy indul egyből a Process Monitor🙂 Ez a lényeges rész:
16:48:56-kor indult a szinkronizáció, elég sok registry kulcshoz hozzáfért, majd 16:48:57-kor elindult két új szál, sokáig semmi, majd 16:49:28-kor kezdi megjeleníteni a hibaüzenetet.
Az új szál által végrehajtott feladatok segíthetnek esetleg, a veremtartalom mutatja ezt. Ebből az érdekesebb rész ez volt:
"40","combase.dll","ObjectStublessClient22 + 0x22a6","0x767b5ba6","C:\Windows\SysWOW64\combase.dll" "41","combase.dll","CoCreateInstance + 0x169","0x767ac9c2","C:\Windows\SysWOW64\combase.dll" "42","GoogleCalendarSync.exe","GoogleCalendarSync.exe + 0x16f24","0x416f24","C:\Program Files (x86)\Google\Google Calendar Sync\GoogleCalendarSync.exe"
A SysWOW64 könyvtárban a C:\Windows\system32 könyvtárban lévő DLL-ek 32 bites változatai vannak 64 bites Windowson (igen, kicsit furcsa, hogy a system32 könyvtárban vannak a 64 bites DLL-ek, de ezt így valósították meg: File System Redirector). A GoogleCalendartSync.exe egy 32 bites program, ezért a 32 bites combase.dll-t tölti be neki az OS. Szépen el is indul a COM kérés. Ezeket a kulcsokat kezdi el matatni:
"HKCR\Wow6432Node\CLSID\{0006F03A-0000-0000-C000-000000000046}" "HKCR\Wow6432Node\CLSID\{0006F03A-0000-0000-C000-000000000046}\(Default)" "HKCR\Wow6432Node\CLSID\{0006F03A-0000-0000-C000-000000000046}\InprocHandler" "HKCR\Wow6432Node\CLSID\{0006F03A-0000-0000-C000-000000000046}\InprocHandler32"
A DCOM konzolon elvileg erre a komponensre jók voltak a biztonsági beállítások (Local Launch, Local Activation), de ekkor jutott eszembe, hogy a 32 bites változatokra külön beállítások vonatkoznak. Ehhez az mmc.exe konzolt 32 bites módban kell elindítani:
mmc comexp.msc /32
Itt már a Local Launch jog ki volt szürkítve, de gondolom azért, mert ez egy 64 bites komponens.
Jó lenne, ha a Calendar Sync is mondana, valamit, hogy mi a baja. Elvileg egy level.txt fájlt kell elhelyezni a C:\Users\username\AppData\Local\Google\Google Calendar Sync\logs könyvtárba, és akkor részletes üzeneteket is rögzít (forrás: Diagnosing Google Calendar Sync Issues). Nekem ez se segített, ide csak a szinkronizáció tartalmáról rögzít adatokat, magáról a program működéséről nem.
Megoldás
Hát nem igazi megoldás, de már kezdett túl sok idő elmenni ezzel, úgyhogy leszedtem és újratelepítettem a Calendar Sync programot. Ez nem szokott segíteni általában, most azonban pont igen. Ugyanúgy beállítva a szinkronizációt ment elsőre minden:( Egyszerűbb lett volna ezzel kezdeni;) A DCOM beállításokkal lehetett valami gond, bár most egy sikeres ProcMon műveletsort összehasonlítva a hibással nem láttam feltűnő különbséget:
Néha a leggyorsabb megoldás sajnos az újratelepítés:(
(Summary: this error is related to some DCOM configuration error, probably because of using the 64 bit version of Office. I was not able to pinpoint the root cause, but a reinstall of Google Calendar Sync helped in my case.)
Én az úgynevezett EVO Collaborator for EVO-t használom. Mivel 2014 augusztusa óta nem ingyenes a Google apps sync-je, ezért kipróbáltam ezt és működik.
Ha érdekel, a blogomban a különféle szinkronizációs lehetőségekről írok.
http://gmailszinkronizalas.blog.hu/2015/01/22/gmail_nevjegyek_es_naptar_szinkronizalasa_az_outlookkal