VBScript(WScript)のバッチファイル実行
お世話になります。
VBScriptで困っています。
ご存知の方、ご教示願えますでしょうか。
Windowsでバッチファイルを実行したときに、DOS画面(コマンドプロンプト)が一瞬パッて表示されるかと思います。
現在開発中のシステムで、プログラムからバッチファイルを自動で実行する処理を入れております。
通常ならばバッチファイルを実行した場合、DOS画面が表示されてしまいますが
DOS画面を出さないようにプログラムを組んでいます。
つまり、VBScriptからバッチファイルを実行しております。
以下、VBScriptのソースを記載します。
Set objShell = WScript.CreateObject("WScript.Shell")
fcresult = objShell.Run("C:\abc.bat", 0, True)
wscript.quit fcresult
上記のVBSを実行すると、必然的に「abc.bat」が実行されます。
しかし、現在僕が使っている環境ですとDOS画面が表示されません(←これがやりたいこと)
しかし、お客さんの環境で同じ様にVBSからバッチファイルを実行すると
「C:\WINDOWS\System32\CScript.exe」という名前でDOS画面が起動されてしまいます。
周りの環境でもVBSからバッチをたたくような処理を行ってみましたが、DOS画面が起動されず。。。
正直、再現が難しいため大変困っております。
お客さんの環境では100%再現されます。
全くもって原因がつかめておりません。
Windowsのセキュリティの設定でしょうか!?
ご存知の方いらっしゃいましたら、知恵をお貸しください。
よろしくお願いいたします。
投稿日時 - 2009-04-09 18:22:27
レジストリーの中を覗くと
質問者のパソコンでは次のようになってませんか?
=============================
HKEY_CLASSES_ROOT
----VBSFile
---------Shell
--------------Open
------------------Command
右ペインのデータ %SystemRoot%\System32\WScript.exe "%1" %*
--------------Open2
------------------Command
右ペインのデータ %SystemRoot%\System32\CScript.exe "%1" %*
==============================
当方のも上記のようになってます。
で、この状態で、コピーのBatを作り、質問者のコードを実行すると
DOS画面は表示されませんでしたが、
OpenとOpen2のデータを入れ替えて実行してみたところ
「C:\WINDOWS\System32\CScript.exe」のDOS画面がでました。
ということで、その関係先のレジストリーがどうなっているか調べてみたらどうでしょう。
投稿日時 - 2009-04-09 23:49:32
ご回答ありがとうございました。
記載してくださった内容を基に、レジストリ内の情報を調べてみました。
確かに、おっしゃった通りになっておりました。
私の方でも、OpenとOpen2を入れ替えて実行してみたところ、
客先で出た現象と全く同じものが再現できました。
これにより、無事解決に至ることができました。
大変有益な情報をありがとうございました。
このような形で無礼かと存じますが、御礼の意とさせていただきます。
投稿日時 - 2009-04-10 09:48:28
このQ&Aは役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
回答(2)
VBSの関連付けはwscript.exeとcscript.exeの2つが用意されています
規定ではWindows GUIとしてのwscript.exeに関連付けされていますが設定でコンソールアプリケーションのcscript.exeに関連づけされます
Runでバッチ実行以前にVBS自体がコンソールで実行されるのでコードをどう書こうがコンソールが出ます
http://msdn.microsoft.com/ja-jp/library/cc364511.aspx
http://msdn.microsoft.com/ja-jp/library/cc364500.aspx
http://support.microsoft.com/kb/952033/en
投稿日時 - 2009-04-09 18:40:22
ご回答ありがとうございました。
無事、解決しました。
投稿日時 - 2009-04-10 09:41:39