2012-01-18 14 views
0

VBScriptについては、実際には実験されていませんが、フォーラムを通して多くのことを読む機会がありました。実際には昨日、彼のスクリプトが動作していなかった理由を解説しました。だから、私はこのスクリプトをローカルで修正し、それをやり方でやったが、他の人の側でオブジェクトの初期化ができなかった。VBScriptとCreateObjectの問題

incriminatedラインは、もう一人は、のWScriptものを削除するように言われ、それは質問アスカー側に働くようだ

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

のようなものです。

私はまず、自分の側でWscript.exeを使用し、その人側(私の仮説)でCScript.exeとリンクされるかもしれないと思っていましたが、これをコマンドラインでチェックして、とにかく動作しました。 私が知りたいと思うのは、なぜこれが起こっているのかです。 CreateObjectを呼び出すスクリプトが "WScript"で動作するのはなぜですか?別のシステムでは、その "WScript"を削除する必要があります。それを保つために? お時間をいただきありがとうございます。 ;) よろしくお願いします。

答えて

2

"WScript.CreateObject"または "WScript.Echo"の "WScript"は、c | wscript.exeスクリプトホストによって提供される(オブジェクトの名前)です。他のホスト(たとえば、mshta)で/の下でVBScriptを実行すると、そのようなオブジェクトはありません。

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

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

私の最初の仮定: "誰か"が/ inすなわちmshtaの下でコードを実行し、 "WScript"を削除して問題を解決しました。 "WScript.CreateObject"から、それはVBScriptの独自のCreateObjectに落ちています。

+0

これは良い答えだと思います。 –

+0

ありがとうございました。 –