From: sakiyama shin Date: 2010-06-22T21:40:08+09:00 Subject: [ruby-dev:41674] [Bug #3464] win32ole failure load TYPELIB on mswin64 vista Bug #3464: win32ole failure load TYPELIB on mswin64 vista http://redmine.ruby-lang.org/issues/show/3464 起票者: sakiyama shin ステータス: Open, 優先度: Normal カテゴリ: ext, Target version: 1.9.2 ruby -v: ruby 1.9.2dev (2010-06-22 revision 28384) [x64-mswin64_90] Vista 64環境でwin32oleがタイプライブラリのロードに失敗します。 Vista 64の環境ではMicrosoft Scripting Runtimeが次のようなキーになっています。 HKEY_CLASSES_ROOT\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0\0\win64 OLE Automationなどwin32, win64両方あるケースもあるようです。 HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\0\win32 HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046}\2.0\0\win64 どちらを優先的に読むべきか解らないのですが下記のパッチでtest-allのwin32oleで出ていた HRESULT error code:0x80029c4a タイプ ライブラリ/DLL の読み込みエラーです が無くなることを確認しました。 Index: ../ext/win32ole/win32ole.c =================================================================== --- ../ext/win32ole/win32ole.c (リビジョン 28384) +++ ../ext/win32ole/win32ole.c (作業コピー) @@ -2355,7 +2355,11 @@ VALUE path = Qnil; path = reg_get_val2(hkey, "win32"); if (path == Qnil) { - path = reg_get_val2(hkey, "win16"); + path = reg_get_val2(hkey, "win64"); + if (path == Qnil) { + path = reg_get_val2(hkey, "win16"); + + } } return path; } ---------------------------------------- http://redmine.ruby-lang.org