だいぶ前にダウンロードした評価版(ビルド3790/sp1/v.1433)なので、現在もそうなのかわからないのですが、
VBScriptでCreateObjectをするスクリプトが動きません。
ActiveXを公開しているDLLがあり、それを利用する実行ファイル(*.EXE)からは利用できるのですが、VBScriptからでは「***というオブジェクトが作成できませんでした。(コード800700C1)」と出ます。
WSHまわりのセキュリティが強化されているのかな、とか直感的に思うのですが、それを明示的に実行可能にする方法はどうすれでよいのでしょうか?(あるいは、この版だけの現象なのか?)
もし、VBS側に手立てが無いのであればDLL側で何か署名するなどが必要なのでしょうか?(だとしても、*.exeが動くのもおかしいし。)
以上、よろしくお願いいたします。
> VBScriptでCreateObjectをするスクリプトが動きません。
> ActiveXを公開しているDLLがあり、それを利用する実行
>ファイル(*.EXE)からは利用できるのですが、VBScriptから
>では「***というオブジェクトが作成できませんでした。
>(コード800700C1)」と出ます。
・64bitのプロセスには、64bit のライブラリ(DLL)
・32bitのプロセスには、32bit のライブラリ(DLL)
を読み込む必要があるはずです。
で、IE の場合、ライブラリ(含む ActiveX DLL)の都合にあわせ
64bitの IE、32bitの IE の両方が用意されていて使い分けると思います。
同様に、 VBScript についても
cscript(あるいは wscript)を切り替える必要がありそうに見えます。
ちょうど 64bit環境整備中なので、確たる答えではないのですが、このあたり確認
する必要を感じます。
-------
米田 MXL0...@nifty.ne.jp
Microsoft Most Valuable Professional
MVP for SQL Server 2002-2005
ご返答ありがとうございます。
コード800700C1というものが、ネットで検索すると「正しくない実行イメージ」らしいエラーであることに気づいたので、おそらくWSHが64ビット版でDLLが32ビットなので読み込めなかったのかな、と考えていました。
(64ビット版であるのか、そうでないのか見分ける方法も不明なのですが、簡単に見分ける方法があるのでしょうか?)
で…WSHの32ビット版というものがあるのか探しているのですが、それらしいものが見つかりません。
やはり、無いのかな。
64ビット版のWSHは32ビットのインプロセスCOMをサポートしないとなると、いろいろ制約が大きいような気がしてなりません。
# COM用に、あるいは、16<->32ビットのDLLのようにサンクレイヤなるものができる?これも大変な気も…。
似たような問題はIE64ビット版のActiveXでしょう。ここでの解決方法がどのようになるのか非常に知りたいです。
"Shinichi Yoneda" <MXL0...@nifty.ne.jp> wrote in message
news:OTUH1VCQ...@TK2MSFTNGP09.phx.gbl...
遅くなりましたが、少し興味があったので、検索してみました。
C:\WINDOWS\SysWOW64
の
wscript.exe
を用いて実行するとどうなりますか?
あるいは、コマンドプロンプトをWOW64版
C:\WINDOWS\SysWOW64\cmd.exe
を用いてみてもかまわないと思います。
タスク マネージャから確認すると、イメージ名として
wscript.exe *32
wscript.exe
を起動し分けることができたので、おそらく可能だと思います。