Skype 6.1のruntime error 217 と レジストリ
runtime error 217 at 0053CE7D - Skype Support Network
Why am I getting a runtime error 217 after updatin- Skype Support Network
Windows 2000で Skype 6.1 を利用すると Runtime error 217 at 0053CE7D が出るのですが、調べてみたところ結構海外では起こってる事例みたいなので解析してみました。
まず、Skype.exe 自体が暗号化されてるので、デバッガ上での逆アセンブルになります。
SUB_L004075AC: or eax,eax jnz L004075BA mov eax,000000D8h call SUB_L00407CC0 : push ecx push 00000001h push 0EEDFADEh mov eax,esp call edx add esp,00000030h L00407612: jmp [L01636014] retn |
まず、Dependency Walker でトレースしてみると 0xEEDFADE という例外が起こっているのでそこを調べてみます。
SUB_L0053DA64: push ebx mov ebx,eax push ebx push 00000000h xor ecx,ecx mov dl,01h mov eax,[L0053A8C0] call SUB_L0053D8F8 call SUB_L004075AC <- pop ebx retn |
スタックトレースをさかのぼります
SUB_L0053DA80: test eax,80000000h jz L0053DA8C call SUB_L0053DA64 <- raise exception. L0053DA8C: retn |
ここに、エラーがかえった時に例外が発生させるというところがありました。
0053D200 push eax 0053D201 mov eax,[esp+10h] 0053D205 push eax 0053D206 mov eax,[ebx+4Ch] 0053D209 push eax 0053D20A mov eax,[eax] 0053D20C call [eax+38h] 0053D20F call SUB_L0053DA80 <- eax=8002802A 0053D214 jmp L0053D222 |
ここで 0x8002802A (TYPE_E_WRONGTYPEKIND)
が返っています。
この関数をもう一度実行してみましょう
oleaut32.dll in StringFromGUID2 を TYPELIB に対して実行しようとして失敗していることが分かりました。
キーは
HKEY_CLASSES_ROOT\TypeLib\{B9AA1F11-F480-4054-A84E-B5D9277E40A8}
でした。
正常に動作している環境を見るとすごいことが分かりました。
レジストリーキーを Skype 初期起動時に 278 x 5 の値 と キーを HKEY_CURRENT_USER に生成しているのです。
レジストリエディタで B9AA1F11-F480-4054-A84E-B5D9277E40A8 を検索してみると
HKEY_CURRENT_USER\Software\Classes\Interface
HKEY_CURRENT_USER\Software\Classes\TypeLib\{B9AA1F11-F480-4054-A84E-B5D9277E40A8}
に出てくるのが引っかかるの全てそうです。
このレジストリ追加だけで、500kほどレジストリが増えそうです。
ちなみに、Windows 2000は生成する前に落っこちています ・ω・;
Comments