2012-04-30 7 views
1

いくつかの背景:私のRailsの環境では、私は、JavaScriptファイルを実行するためにWindowsスクリプティングホストを使用していますExecJSを使用していますCoffeeScriptのを使用しています。cscript.exeで二重スラッシュを使用するとcmd.exeがネットワークに侵入しないようにするにはどうすればいいですか?

CoffeeScriptファイルがコンパイルされると、残念ながら私は巨大な遅延(> 30秒)を経験しています。

プロセスエクスプローラとプロセスモニタを使用する私はすでにコマンドラインを原因の1つとして特定しました。 (!ないcscript.exe)何らかの理由cmd.exeについては

cscript //E:jscript //Nologo //U C:/path_to_coffeescript_compiler.js 

ではなく、いくつかの遅延の後、二重のバックスラッシュとダブルスラッシュを扱い、明らかに失敗した各パラメータのネットワーク名を解決しよう:cscript.exeはダブルスラッシュとそのパラメータが期待します。その上

cmd.exe  CreateFile  \\E:jscript\\    OBJECT PATH INVALID 
cmd.exe  CreateFile  \\E:jscript \Nologo\\  BAD NETWORK PATH 
cmd.exe  CreateFile  \\E:jscript \Nologo \U\ BAD NETWORK PATH 
cmd.exe  CreateFile  \\Nologo\\    OBJECT PATH INVALID 
cmd.exe  CreateFile  \\Nologo \U\    BAD NETWORK PATH 

...と:

はここで小さなプロセスモニタログの抜粋です。

これを防ぐにはどうすればよいですか?

+0

うーん...私はこれを再現することができません(procmonはアクティビティに関する偽のネットワークパスを示していません)。 'cscript'を何か他のもの、例えば' echo'で置き換えるとどうなりますか?本当に 'cmd.exe'が面白いことをしているのであれば、それもそこで起こるはずです。また、対話的なシェルやバッチファイルから 'cscript'を呼び出します。 'echo%CMDCMDLINE%'の出力をポストしたいかもしれません。 –

+0

面白いですが、 'echo'やその他の実行可能ファイルでは起こりませんが、' wscript.exe'で起こります。コマンドラインは 'ExecJS'によって生成され、' cmd.exe'を '/ c'スイッチで起動します。また、すべての*コールで遅延が発生しません。 ExecJSからはほとんど毎回ですが、自分のコマンドラインからはこれまでの半分の時間がかかります。 –

+0

私は実際のコマンドラインを見たと思います。プロセスエクスプローラですが、なんらかの理由で 'cmd/C // E:...'のようなものを生成することがあります。つまり、誤って 'cscript.exe'を除外していますか?また、 'cmd/c" cscript // E:jscript // Nologo // U C:/path_to_coffeescript_compiler.js "'を単純なCMDウィンドウから実行するだけで、エラーも発生しますか? –

答えて

3

もう少しハッキングを行った後、私はついにこの問題を発見しました。犯人は、検索をしたcmd.exeのプロセスにDLLを注入しコモドインターネットセキュリティた:オプションため

ヘルプテキストは、特定のアプリケーションためのヒューリスティックコマンドライン解析を行います。

これを選択する

をComodo Internet SecurityにVisual Basicの スクリプトやJavaアプリケーションなどのコードを実行できるプログラム のヒューリスティック解析を実行するよう指示します。このオプションを有効にする の影響を受けるプログラム例は、wscript.exe、cmd.exe、java.exeおよびjavaw.exeです。

すべての提供の回避策のおかげで、これらのどれも原因がわからないという事実:

1

私はどのプロセスが間違っているのか理解していませんが、上記のプロセスから//を隠そうとする可能性があります。

アイデア1) CSCRIPTコマンドをバッチファイルに入れて、ExecJSでバッチファイルを呼び出します。

アイデア2)遅延変数

for %s in (/) do cscript %s%sE:jscript %s%sNologo %s%sU C:/path_to_coffeescript_compiler.js 

への注意を使用して//の外観 - これは非常に説明していませんが、ほとんどのWindowsコンテキストは\の代わりに/を受け付けます。例えば、DIR "C:/"DIR "C:\"に相当します。

+0

いいアイデアだが、どちらも違いはなかった。私は 'for'の変種に大きな期待を持っていました... –

関連する問題