• 締切済み

webサーバ上でEXEを起動するには?

Visual Studio 2005でC#を使いWEBアプリ制作中です。 制作したWEBアプリが時々おかしくなり、WWWサービスを再起動すると元通りに直ります。 おかしな動作をするときはtry catchで検出できていますので catchの中でWWWサービスを再起動させようと思い下記を実行しましたが、再起動しません。   prog.StartInfo.FileName = "NET";   prog.StartInfo.Arguments = "STOP W3SVC";   prog.Start();   prog.StartInfo.FileName = "NET";   prog.StartInfo.Arguments = "START W3SVC";   prog.Start(); Windowsアプリではこれで再起動します。 Webアプリは何か方法があるのでしょうか? よろしくお願いします。

みんなの回答

  • onos
  • ベストアンサー率81% (127/155)
回答No.2

んー、本来はなぜ問題がでるか、をきちんと調べるべきでしょうが。 WWWサービスまでいかずに、Webアプリとしての再起動でクリアできるのであれば、実行時ユーザーに権限与えたうえでweb.config書き換えるとか、もうちょっと影響あたえない範囲でWebアプリが再起動するレベルのファイル書き換えしてみるのもひとつの手かも。 あと、IISの設定で毎晩アプリケーションプールのリサイクル実行するとか。。。

全文を見る
すると、全ての回答が全文表示されます。
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

さすがに通常の実行権限(IUSRやNetworkService)でサービスプロセスを停止させるのは無理かと。 それができると、セキュリティ的に神も仏もないよね。 解決策は。。利用者権限をAdmini権限に偽装するか、確実なのは管理者権限で動作するWindowsサービスを別に作って、WCF経由でリモートオブジェクトとして実行すれば。 (Webサーバ側をクライアントとして動作させる) どうしてもWebから外部のリソースを操作する必要があるとき、使う方法です。 .NET Framework4とIIS7.5にすると、プロセス保護が強力になって、WWW再起動といった最悪の手段は防げると思うのですが。。I/Oとかからんでるとやっぱり難しいかな。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VisualBasic2005 外部アプリを最小化で起動する

    VisualBasic2005にてプログラムをしているのですが、 指定されたアクションをトリガにして、外部アプリを最小化で起動したいのですが、最小化されずに起動してしまいます。 外部アプリは、WEBブラウザ(safari)です。 以下に、処理部分を記載します。 Dim p As System.Diagnostics.Process = New System.Diagnostics.Process p.StartInfo.FileName = 'safariのパス' p.StartInfo.Arguments = '指定したURL' p.StartInfo.UseShellExecute = False p.StartInfo.RedirectStandardOutput = True p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized p.StartInfo.CreateNoWindow = True p.Start() 上記で実行すると、指定したURLでSafariが起動するのですが、 最小化で起動しません。 通常のウィンドウサイズで起動します。 どなたか、アドバイスをお願いします。

  • コマンドプロンプトを表示せずにプロセスの起動

    VB.NETでソースファイルをJ2sk142(javac.exe)に渡してコンパイルの結果をコマンドプロンプトではなくVBのTextBoxに表示するプログラムを作成しています。 でも、プロセスを起動すると一瞬だけプロンプトが表示されます。 これを表示させない方法はありますでしょうか? With Process1 .StartInfo.FileName=JAVACPATH .StartInfo.Arguments=TextBox.Text .StartInfo.WorkingDirectory=ProPath .StartInfo.UseShellExecute = False .StartInfo.ErrorDialog = True .EnableRaisingEvents = True .StartInfo.RedirectStandardOutput = True .StartInfo.RedirectStandardError = True .StartInfo.WindowStyle = ProcessWindowStyle.Hidden End With Try Process1.Start() OutPutTextBox.Text &= Process1.StandardOutput.ReadToEnd OutPutTextBox.Text &= Process1.StandardError.ReadToEnd Process1.WaitForExit() Catch ex As Exception

  • WEBが起動できません

    WINDOWS NT4.0で下記のエラーでWEBが起動できません。 World Wide Web Publishing Service サービスを開始できませんでした。 エラー0003:指定されたパスが見つかりません。 上記のエラーで電源切断後を行い再起動後WWWが起動できません。 原因と対処を教えて下さい。

  • C#でIISでPDFを印刷する方法

    VisualStudioでC#/ASP.netでPDFファイルをサイレント印刷するプログラムを実装しています。 「VisualStudio開発サーバーを使用する」の状態だと、 問題なく動作するのですが 「IIS Webサーバーの仕様」にすると 下記コードが全く反応しなくなります。 プリンタのプロパティ(セキュリティ)には 「Network Service」の「実行権限」を追加しています。 コードは、以下です。原因に何か心当たりのある方は、ご教授下さい。 Process printProcess = new Process(); string filePath = null; try { filePath = "C:\\PDFPRINT\\Output\\out.pdf"; printProcess.StartInfo.FileName = "C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe"; printProcess.StartInfo.Verb = "open"; printProcess.StartInfo.Arguments = " /h /t " + filePath + " EPSON PX-404A"; printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; printProcess.Start(); printProcess.WaitForExit(1500); } catch { throw; } finally { if (!printProcess.HasExited) { printProcess.Kill(); printProcess.Dispose(); } }

  • VBでコンソールアプリの出力を取得したいのですが

    ネット上で入手したコマンドプロンプト上で使うアプリをGUIで操作できるようにしたく出力を取得したいのですが出来ません。 ネットで出力の取得方法を調べて下記のようにしているのですがどうやっても取得できません・・・ (ipconfig や dir 等は問題なく取得できたのですが・・・) VBは2008です Dim p As New Process() p.StartInfo.FileName = "cmd.exe" ' 実行するファイル p.StartInfo.Arguments = "aaa.exe" ' 目的のアプリ p.StartInfo.CreateNoWindow = True ' コンソールを開かない p.StartInfo.UseShellExecute = False ' シェル機能を使用しない p.StartInfo.RedirectStandardOutput = True ' 標準出力をリダイレクト p.Start() ' アプリの実行開始 Dim output As String = p.StandardOutput.ReadToEnd() ' 標準出力の読み取り output = output.Replace(vbCr + vbCrLf, vbLf) ' 改行コードの修正 TextBox1.Text = output ' [出力]ウィンドウに出力 試しに自分で文字を表示するだけのコンソールアプリを作成して試したのですがそれは取得できました。 目的のアプリが特殊なのでしょうか? ソースがあったので見てみたのですがC言語だった為詳しくわからなかったのですが、出力は「Console.WriteLine」ではなく「fputs」を使用して出力していました・・・これが原因なのでしょうか? どうにかして、出力を取得する方法はないものでしょうか? よろしくお願いします。

  • Query sessionを実行させるには?

    お世話になります。   DOSコマンドの"QUERY SESSION"で得たセッション情報を元に、 処理を行いたいと考えております。   そこでVB2010にて下記のプログラムを試したのですが、肝心の"QUERY SESSION"が   『操作可能なプログラム(中略)として認識されていません。』として実行されません。   ---------------------------------------------------------         '--Processオブジェクトを作成         Dim pr As New System.Diagnostics.Process         pr.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec")         p.StartInfo.UseShellExecute = False         p.StartInfo.RedirectStandardOutput = True         p.StartInfo.RedirectStandardInput = False           'コマンドラインを指定         pr.StartInfo.Arguments = "/c QUERY SESSION"  '<--------問題個所?           pr.Start()           '出力を読み取る         Dim results As String = pr.StandardOutput.ReadToEnd()           pr.WaitForExit()         pr.Close()   --------------------------------------------------------- 上記のコマンドラインの部分を、         pr.StartInfo.Arguments = "/c ipconfig" など他のDOSコマンドに変えると正常に動作するのですが、   例えば下記の様に別表現でQuery sessionを指定しても同様のエラーが返されるばかりです。         pr.StartInfo.Arguments = "C:\windows\System32\qwinsta.exe"   何が原因となっているのかも分からず困っております。   どうか、お知恵をお貸しください。宜しくお願い致します。

  • ウェブ制作おすすめツール

    ウェブ制作の仕事をしています。 ウェブ制作の担当者御用達のツール、アプリ、サービス、ホームページを教えてください。

  • WindowsサーバにおけるApache起動

    以下の環境でWebサーバを動かしています。 Windows server 2008 R2 Standard Apache/2.2.17 (Win32) ApacheはXamppによりインストールしました。 先日、XamppのコントロールパネルでApacheをリスタートすると、起動しなくなりました。 可能性が高いと言われる80番ポートの競合を疑いましたが、どうもそうではないようでした。 で、C:\xamppにある、apache_start.batを実行してみたら、正常に起動しました。 起動したので、一応は解決なのですが、 ・Xamppコントロールパネルのstatusは、「httpd state 0, service 1, start 0, thread 0, op 0, port 80」となっており、Running状態ではない ・管理ツールのサービスを見ると、Apacheのサービスが動いていない という状況で、これでなぜWebサーバが動いているのか理由がわかりません。 情報が不足しているかもしれませんが、上記の現象についてご教示いただければ幸いです。

  • Webアプリから起動した実行ファイルについて

    お世話になります。IIS6.0、ASP.NET、C#でWeb開発しております。 Webアプリからwin32コンソールアプリを起動しているのですが、コンソールアプリ側でファイル操作ができません。具体的には、fopen()やCreateFile()などを試しましたが、落ちる・エラーが返るなどでまともに動きませんでした。コンソールアプリ単体で起動した場合は問題ないです。Webアプリから起動した場合、タスクマネージャで見ると、EXEの実行ユーザが"NETWORK SERVICE"となっています。権限の問題とかでしょうか…。どなたか、分かる方がいましたら、教えて頂ければと思います。よろしくお願いします。

  • サーバからレスポンスが戻ってこない??

    VB.2005でASP.NETのWEBアプリを開発しております。 WEB上でボタンを押し、process.start("test.exe")にてBinフォルダ下の外部exeを起動する処理をしているのですが、起動がうまくいき終了しているのですが、なぜか右下のゲージがゆっくり進んだままレスポンスが帰ってこないという現象が起こっています。 環境はWindows2003ServerでIIS6.0で行っております。 クライアントのWindowsXP上ではうまくいっております。 なにか原因になるものはあるでしょうか??

MFC-J4440NのFAX機能を使いたい
このQ&Aのポイント
  • MFC-J4440Nを購入したのですが、以前使用していたMFCJ850DWNの通信ボックスと接続してFAX機能を使用したいです。接続方法について相談したいです。
  • MFC-J4440NとMFCJ850DWNの通信ボックスを無線接続する方法はありませんか?ひかり回線を使用しています。
  • MFC-J4440NのFAX機能を利用するためには、電話回線とMFCJ850DWNの通信ボックスを有線接続する必要があります。無線接続はできません。
回答を見る

専門家に質問してみよう