3

Windows スクリプト コンポーネントを x64 開発マシンで動作させようとしています。x32 ビットで正常に動作します。しかし、実行できないようです。JScript と VBScript の両方で同じ問題があります。

これは可能な限り最も単純な wsc コンポーネントです。メッセージボックスに「こんにちは」と表示されます。以下のスニピットを test_lib.wsc という名前のファイルに保存すると、右クリックして登録できるようになります。COM コンポーネントとして利用できるようになりました。

<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
    description="Test Script Library"
    progid="TestScript.Lib"
    version="1.00"
    classid="{314042ea-1c42-4865-956f-08d56d1f00a8}"
>
</registration>
<public>
  <method name="Hello">
  </method>
</public>
<script language="VBScript">
<![CDATA[
Option Explicit
Function Hello()
    MsgBox("Hello.")
End Function
]]>
</script>
</component>

次に、次のサンプル VB スクリプトを作成し、test.vbs という名前のファイルに保存します。

dim o
set o = createobject("TestScript.Lib")
o.hello()

cscript または wscript で test.vbs を実行すると、常に次のようになります。「C:\test.vbs(3, 1) Microsoft VBScript ランタイム エラー: ActiveX コンポーネントはオブジェクトを作成できません: 'TestScript.Lib'」

これは、32 ビット XP では問題なく動作します。誰が何が間違っている可能性があるかについて何か考えを持っていますか?

たくさんのノエルに感謝します。

4

2 に答える 2

3

Windowsエクスプローラーのコンテキストメニューからwscを登録すると、64ビットのWindows 7ですべてがうまくいきました。

32 ビットのコマンド プロンプトからの実行に問題があり、wsc を から regsvr32 に再登録する必要がありました%windir%\sysWOW64。その後、64 または 32 のコマンド プロンプトから実行すると、cscript.exe の 64 ビット バージョンと 32 ビット バージョンの両方で問題なく動作しました。

wsc を登録するとき、フォルダーから regsvr32 を使用していることは確かです%windir%\sysWOW64か?

regsvr32 には 2 つのバージョンがあり、1 つは 32 ビット (sysWOW64)、もう 1 つは 64 ビット (system32) で、どちらも regsvr32 という名前です。

混乱している?私たちの残りに参加してください:)

これは、64ビットWindowsでのいくつかの落とし穴を強調する良いリンクです:すべて同じですが、非常に異なります

于 2010-02-11T14:31:57.243 に答える
0

32ビットバージョンのWScriptまたはCScriptで実行していることを確認する必要があります。

デフォルトでは、64ビットバージョンで実行され、32ビットコンポーネントをロードすることはできません。

WScriptとCScriptの32ビットバージョンはにあります"%SystemRoot%\SysWOW64\

RegEditを使用して新しいレジストリキーを追加します:-

HKEY_CLASSES_ROOT\VBSFile\Shell\Open32\Command

そしてそれにデフォルト値を与えます:-

"%SystemRoot%\SysWOW64\WScript.exe" "%1" %*

これにより、VBSファイルのコンテキストメニューにOpen32エントリが表示されます。

CScriptを実行するには、CSriptへのパスがSysWOW64フォルダーのバージョンを取得していることを確認する必要があります。

于 2010-02-11T13:02:44.473 に答える