2017年10月5日木曜日

Microsoft Data Access Components 2.0 セットアップが終了しない

 VB6で開発されWindows 7で使用していたアプリがWindows 10の環境で使用可能か検証をした。

 セットアップを実行すると、Microsoft Data Access Components 2.0 セットアップの画面が表示されファイルがコピーされていたが、いつまで経ってもセットアップが終了しない。この画面のまま先に進まない。ひょっとするとハングアップしたかも。



タスクマネージャーで確認してみるとこんな状況。
 ODBC Driver Configuration Program(32ビット)がCPUを半分使用している。私のPCのCPUは2コアでほぼ100%の負荷。ループしているかな。

 今回のアプリは自分で開発したものではないのでソースはなく調べるのが大変かなと思いながらも、マイクロソフトのSysinternalsSuiteに含まれているProcmon.exeで調べてみると、odbcconf.exeがレジストリのI/O処理でループしている。

Procmon.exeに表示された情報で関係していそうな情報。
18:10:26.2519258 odbcconf.exe 4564 RegOpenKey HKCR\RDSServer.DataFactory\Clsid SUCCESS Desired Access: Maximum Allowed, Granted Access: Read
許可されたアクセス(Granted Access)が読み取りのみになっている。

 odbcconf.exeに関係していそうなレジストリのキーは以下の二つ。
HKEY_CLASSES_ROOT\RDSServer.DataFactory
HKEY_CLASSES_ROOT\RDSServer.DataFactory\Clsid
これらの2つのキーに対するアクセス許可を確認すると、Administratorsグループは読み取りのみでフルコントロールは与えられていない。試しに、Administratorsグループに対してフルコントロールを与えると、その瞬間にセットアップは正常に終了した。

Procmon.exeに表示された情報で関係していそうな情報。
18:14:35.4679275 odbcconf.exe 4564 RegOpenKey HKCR\RDSServer.DataFactory\Clsid SUCCESS Desired Access: Maximum Allowed, Granted Access: Read, Write DAC
許可されたアクセス(Granted Access)にWrite DACが追加されている。

 もし、Microsoft Data Access Components 2.0 セットアップが終了しない場合は、
HKEY_CLASSES_ROOT\RDSServer.DataFactory
HKEY_CLASSES_ROOT\RDSServer.DataFactory\Clsid
の2つのアクセス許可を確認してみると良いかもしれない。いつものことですが、レジストリの変更は自己責任でお願いします。当然のことながら、該当キーを変更前にバックアップは必須です。