• 締切済み

WshShell.Runでサーバにアクセスできません。

拡張子が「js」のファイルでWshShell.Runでサーバにアクセスできません。 var WshShell= new ActiveXObject("WScript.Shell"); WshShell.Run("runas /user:ドメイン名\\administrator \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); while(!WshShell.AppActivate("runas.exe")){ WScript.Sleep(100); } ・ ・ ・ どなたかご教授お願いします。

みんなの回答

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

ええと。回答ではないのですが、一つだけ質問者さんをフォローさせていただきます。 >> #1さん > まさかそのxxx.jsファイルを直接クリックしたり、IEのアドレス欄に打ち込んだりしても、 > なんらかの拡張子の関連付けがないとまず動きません。 Windowsの場合、xxx.js は「JScript File」に関連付けされます。 例えば、下記コードを test.js で保存して実行すると「メモ帳」が立ち上がります。 --- var WshShell = new ActiveXObject("WScript.Shell"); WshShell.exec('%SystemRoot%\\system32\\notepad.exe'); --- JScript http://msdn.microsoft.com/ja-jp/library/cc427807.aspx ここ最近、JScriptの質問が カテゴリ [JavaScript] に質問を寄せられているようです。 厳密には、[その他(プログラミング)] なのでしょうけれど、 JavaScriptの拡張言語ですから、ここで質問されても仕方ないかな、という気はしています。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

拡張子が「js」のファイルで... とありますが、まさかそのxxx.jsファイルを直接クリックしたり、IEのアドレス欄に打ち込んだりしても、なんらかの拡張子の関連付けがないとまず動きません。 xxx.jsはスクリプトですから、普通 <script src="./xxx.js" type="text/javascript" charset="Shift-jis"> としてWebページに組み込んでますよね。 こんな感じ(ファイル名はrunas.htmとかにしておく) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> <title>RunAs Exec</title> </head> <body> <script src="./runas.js" type="text/javascript" charset="Shift-jis"> </script> </body> </html> それでも、このスクリプトはhtmlファイルだとWebサイトから動かないはずです。(実際IE7だとWshShell.Runが無視されるみたいです) htmファイルをローカルにおいて、IEでそのhtmを読み込むと動きます。 (※セキュリティ確認のポップアップが何回かでますが) どうしても、Webサイトに置きたかったら、拡張子を.htaにしておきます。 そうすると、IEでそのhtaを要求すると、ダウンロードしてじっこうしてよいかどうかのポップアップが出るので、はいを答えていけば実行されます。 こんな感じ(ファイル名はrunas.htaとかにしておく中身は同じでよい) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> <title>RunAs Exec</title> </head> <body> <script src="./runas.js" type="text/javascript" charset="Shift-jis"> </script> </body> </html> スクリプトの方はファイル名をrunas.jsとして var WshShell= new ActiveXObject("WScript.Shell"); WshShell.Run("runas /user:ドメイン名\\administrator \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); while(!WshShell.AppActivate("runas.exe")){ WScript.Sleep(100); } ですかねえ、これだとパスワードの投入が出来ないので、 一回、別途コマンドプロンプトで runas /savecred /user:ドメイン名\\administrator cmd.exe を実行して、パスワードを覚えさせた後なら、 WshShell.Run("runas /savecred /user:ドメイン名\\administrator \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); で呼び出せば、パスワードを聞かれないはずです。 バッチファイル実行なら、 WshShell.Run("runas /savecred /user:ドメイン名\\administrator cmd.exe /c \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); の方が確実かもしれません。 テストする時は、実行させるプログラムを WshShell.Run("runas /savecred /user:ドメイン名\\administrator cmd.exe "); だけに留めておいて、コマンドプロンプトの状態を確認した方がよいでしょう。

関連するQ&A

専門家に質問してみよう