fc2ブログ

05 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

不労所得で生活できるのか?

主にMT4関連のツールやEAを作ってます。 夢の自動集金マシン(?)は存在するのか・・・。

CreateObject("Scripting.FileSystemObject")オートメーションエラーで嵌まった 

環境はWindows7 pro x86 sp1。

vbやvbaでCreateObject("Scripting.FileSystemObject")を実行すると、

「オートメーションエラーです。ライブラリは登録されていません。」

とのエラー。

前々からエラーになるのは知っていたが、どうしても必要なオブジェクトではないので

だましだましコーディングで回避していた。

しかし、いつまでも放っておくのは気持ちが悪いので

真剣に解決策を模索してみた。

scrrun.dllのレジストリ登録がうまくいっていないのは知っていたが、

何度も試したregsvr32 scrrun.dllを再度実行。

「うまくいったよ」メッセージが出るがやっぱり現象は変わらない。

scrrun.dllの依存ファイルはMSVCRT.dll、ScrrnJP.dllの様だがどちらもSystem32に存在する。

regsvr32 /u scrrun.dllでレジストリ登録削除を試みると、

「dllUnRegisterServerがエラーコード0x8002801dを返した」とのエラーとなる。

検索しても、このエラーコードの意味はよくわからなかったが、レジストリがらみなのは間違いない。

別のXPマシンのエクセルvbaではCreateObject("Scripting.FileSystemObject")でエラーが発生しないので、

両方のマシンのレジストリをキーワード「scrrun.dll」で検索し、違いを探ることにする。

で結局、違いは、

[HKEY_CLASSES_ROOT\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}]

だった。

Windows7のほうは、[HKEY_CLASSES_ROOT\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}]は、

存在するが、中身は空っぽで、なおかつフルコントロール権限が無い。

また、[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}]は、

存在すらしない。

[HKEY_CLASSES_ROOT\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}]のアクセス権を

フルコントロールに設定し、XPからエクスポートしたレジストリ情報を取り込んで無事解決。

なおレジストリのアクセス権変更は、

変更するレジストリキーを右クリック→「アクセス許可」→「グループ名またはユーザ」でhogehogeを選んで

→「詳細設定」ボタン→「所有者」タブ→「所有者の変更」でhogehogeを選んで「OK」

→「hogehogeのアクセス許可」で「フルコントロール」にチェック→「OK」


スポンサーサイト



2014/04/22 Tue. 14:52 | trackback: -- | comment: -- | edit