36

Windows Server 2008 サーバーにサード パーティのアプリをインストールしたところ、

ActiveX コンポーネントはオブジェクトを作成できません

CreateObjectVBScript でを使用してアクセスしようとすると、メッセージが表示されます。

それは間違いなくインストールされ、「プログラムと機能」の下に存在します。何が起こっているのかを把握するためにチェックできるリストを持っている人はいますか?

regsvr32.exe /i bob.dll提案どおりに使用して DLL を登録しようとしましたが、次のエラーが発生します。

モジュール "Bob.dll" が読み込まれましたが、エントリ ポイントの DllRegisterServer が見つかりませんでした。

「Bob.dll」が有効な DLL または OCX ファイルであることを確認してから、再試行してください。

この時点で、これは 64 ビット マシン上の 32 ビット アプリケーションであることに注意してください。Windows XP 32 ビットの私のマシンでも問題なく動作します。

4

12 に答える 12

50

このアプリケーションをVBScriptで動作させるには、2つのことをしなければなりませんでした。

  1. RegAsm.exeを実行してDLLを登録します。
  2. C:\ Windows \ SysWOW64 \ cscript.exeを実行して、VBScriptを実行します。

これらが機能しない場合は、IISで32ビットアプリケーションを有効にすることに関する他の回答をここで確認してください。

于 2009-03-18T21:00:50.173 に答える
40

また、IIS 内の DefaultAppPool の詳細設定で [32 ビット アプリケーションを有効にする] が True に設定されていることも確認する価値があります。

于 2011-09-08T08:06:34.037 に答える
10

アプリはCOMオブジェクトを作成しようとしています。そのCOMDLLが存在する場合でも、インストールされていない別のDLLに依存している可能性があります。DependencyWalkerを使用して、これが当てはまるかどうかを確認できます。

于 2009-03-18T04:29:58.763 に答える
6

ブラウザの設定を確認してください。

IE を使用している私にとっては、[ツール]/[インターネット オプション] の [セキュリティ] タブで、関連するゾーンの [カスタム レベル] に移動し、ActiveX 設定を確認することで修正できました。「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの作成」を「有効」に設定すると、この問題が解決されました。

于 2010-08-25T06:27:27.933 に答える
5

また、コンポーネントを登録するときは、32 ビット バージョンの regsvr32.exe を使用していることを確認してください。管理者特権のプロンプトで単に regsvr32.exe を実行すると、デフォルトで標準の 64 ビット バージョンが使用されます (奇妙なことに、これは C:\Windows\System32 にあります)。

必要なバージョンは、C:\Windows\SysWow64\regsvr32.exe にあります。

于 2011-06-01T14:10:56.523 に答える
2

参照しているオブジェクトがシステムに登録されていないように見えます。インストール済みとおっしゃっていましたが、必ずしも登録済みというわけではありません。これを確認するには、レジストリで使用した progID を検索します。

このコードの例:

set objFSO = CreateObject("Scripting.FileSystemObject") 

Scripting.FileSystemObjectレジストリで検索します。次に、見つかった値の上にあるレジストリ キーの値を調べInProcServer32ます。これにより、登録元の ActiveX ファイルへのパスが表示されます (Scripting.FileSystemObjectファイルは "c:\windows\system32\scrrun.dll" です)。

レジストリに progID が見つからない場合は、システムに登録されていないことが問題です。登録されていない場合は、登録されているファイル (通常はサードパーティ アプリの同じフォルダー パスにある .ocx または .dll) を見つけて、これらのファイルを登録する必要があります。ファイルを登録するコマンドは次のとおりです。

regsvr32 /i "c:\windows\system32\scrrun.dll"

レジストリに progID 値があり、システムに存在するファイルを参照している場合でも、ファイルの再登録を試みることができます。登録がどこかで壊れていることがあり、ファイルを再登録する方が簡単で、問題を修正する方が簡単であることがわかりました。

于 2009-03-18T15:42:56.943 に答える
1

これが古いスレッドであることは知っていますが、ウイルス対策がシステムで Win32API とスクリプトをブロックしているかどうかを確認した人はいますか? オフィス システムに CylanceProtect をインストールしましたが、他の人が挙げたのと同じ問題が発生していることがわかりました。これは、イベント ビューアで Windows ログを確認すると確認できます。

于 2019-08-27T10:01:17.580 に答える
0

私が書いているVB6プログラムでも同じ問題がありました.FormはScriptControlオブジェクトを使用して、ユーザーが選択したVBScriptを実行します。

先日、VBScript が Scripting.FileSystemObject を作成しようとしたときに「ランタイム エラー 429」が突然表示されるまでは問題なく動作していました。

ここで提案されたすべての解決策を試して丸一日頭を悩ませた後、私は自分のアプリケーションに問題があるのではないかと疑い始めました。

幸いなことに、その形式のバックアップ バージョンがありました。それらのコードを比較したところ、ScriptControl オブジェクトの UseSafeSubset プロパティを誤って True に設定していたことに気付きました。

それはフォームの唯一の違いであり、バックアップコピーを復元した後、それは魔法のように機能しました.

これが誰かに役立つことを願っています。VB6でアップ!:-)

マックス - イタリア

于 2015-02-06T08:43:36.640 に答える
0

Excel で同じ問題が発生しました。Excel 64 ビット バージョンで 32 COM DLL を使用しようとしたところ、このエラーが発生しました。COM dll を 64 ビット バージョンに再構築すると、エラーが消えます。そのため、COM dll がアプリケーションと同じアーキテクチャ (x86 と x64) であることを確認してください。

于 2016-04-06T12:54:21.827 に答える
0

vbscript でも同じエラーが発生します。

Set objFSO = CreateObject("Scripting.FileSystemObject")

解決策:
コマンド ラインを開いて、次を実行します。

regsvr32 /i "c:\windows\system32\scrrun.dll"

そしてそれは動作します

于 2012-07-09T08:02:12.440 に答える
0

私もこの問題を抱えていました。古い 32 ビット dll を 64 ビット システムで実行しようとしていました。.dll を C:\Windows\SysWoW64\ ディレクトリにコピーし、これを実行することで機能しました。

%systemroot%\SysWoW64\regsvr32 "C:\Windows\SysWoW64\thenameofyourdll.dll"

また、IIS を有効にして 32 ビット アプリを実行する

于 2018-09-25T14:20:59.270 に答える