1

VBScript についてはあまり実験していませんが、フォーラムを通じて多くのことを読む機会があり、実際に昨日、スクリプトが機能しない理由を調べて解決策を見つけた人を助けました。そのため、このスクリプトをローカルで変更し、自分のやり方で実行しましたが、他の人の側ではオブジェクトの 1 つを初期化できませんでした。

有罪判決の行は次のようになります

    Set WshNet = WScript.CreateObject("WScript.Network")

別の人は、WScript のことを削除するように言われましたが、質問者側では機能しているようです。

私は最初、私の側で Wscript.exe を使用し、その人側で CScript.exe を使用することに関連している可能性があると考えました (私の仮説) が、コマンドラインでこれをチェックアウトしたところ、とにかく機能しました。それで、私が知りたい、理解したいのは、なぜこれが起こっているのですか?CreateObject を呼び出すスクリプトが "WScript" で機能するのはなぜですか。しかし、別のシステムでは、その「WScript」を削除する必要があります。それを機能させ続けるには?お時間とご回答ありがとうございます。;) よろしくお願いします。

4

1 に答える 1

4

「WScript.CreateObject」または「WScript.Echo」の「WScript」は、c|wscript.exe スクリプティング ホストによって提供される (オブジェクトの名前) です。他のホスト (つまり、mshta など) で VBScript を実行する場合、そのようなオブジェクトはありません。

言語自体には (異なる! 詳細はドキュメントを参照) "CreateObject" 関数があり、すべての VBScript ホストで使用できます。したがって、プレーンな「CreateObject」を使用して安全を確保してください。

"WScript.Network" の WScript は、コンピューターにインストールされている (またはインストールされていない) COM オブジェクトの ProgId の一部です。「ファースト ネーム」が「WScript」の COM オブジェクトは、c|wscript.exe によって提供される WScript オブジェクトとはまったく異なります。

だから私の最初の仮定:「誰か」がieまたはmshtaの下/中のコードを実行し、「WScript」を削除することで問題を解決しました。「WScript.CreateObject」から、つまり VBScript 独自の CreateObject にフォールバックします。

于 2012-01-18T18:44:42.750 に答える