【質問】 ASP.NETスレ 【議論】

このエントリーをはてなブックマークに追加
554520
解決しました。ほとんど反則ですが(^^;、コマンドプロンプト+.bat経由で起動することにより問題を回避しました。
以下、サマリーします。

1.目標
 (1)ASP.NET(*.aspx)からC#で書かれた*.exeをバックグラウンドで起動したい
 (2)二重起動は禁止し、起動を指示された場合は*.aspxでそれをチェックしユーザに通知する。

2.手段
 Mutexを作成し*.aspxとC#の*.exeの双方で管理する

3.問題点
 ユーザ「ASPNET」にadministrator権限を与えないと、*.aspxから子プロセスとして起動しMutexを作成する時に
 「アクセスが拒否されました」という例外が発生する。

4.回避方法
 (1)*.aspxからの起動時に、Process.StartInfoにコマンドプロンプトからの起動と実行ディレクトリの指定を行う。
 (2)直接*.exeを起動するのではなく、バッチファイルを作成し、そのバッチファイルをProcess.StartInfo.FileNameに設定する。
  引数が必要な場合は*.batファイルに引数を引き継ぐ指定を行うこと

……誰か検証してくれませんか? アタシ、比喩抜きでこれからしばらく死にますので……(^^;