2016-09-07 11 views
1

多くのクライアントで実行されるASP.NET MVCアプリケーションを作成します。 IISのローカルバージョンが実行されています。私は、Process.Start()でPowerPointファイルを開こうとしています。 PowerPointは正常に開いています(タスクマネージャで見ることができます)が、バックグラウンドで実行されていて、フォアグラウンドで開くようにします。私は次のコードを使用しているアプリケーションを起動するためにASP.NET WebアプリケーションでProcess.Start()を使用してPowerPointを起動すると、PowerPointがバックグラウンドで起動します。

:私はIISのローカルインスタンスを使用していますので

string powerPointPath = @"C:\Program Files (x86)\Microsoft Office\root\Office16\POWERPNT.EXE"; 
string powerPointFilePath = "\"" + filePath; 

Process powerPoint = new Process(); 
powerPoint.StartInfo.FileName = powerPointPath; 
powerPoint.StartInfo.Arguments = " /S " + filePath; 
powerPoint.Start(); 

は、私がIIS APPPOOL\DefaultAppPoolにPowerPointの実行可能ファイルの読み取り権限を付与することを確認しましたユーザー。 PowerPointがフォアグラウンドで動作するようにする方法はありますか?

編集:私は(この場合、アプリケーションはMYNAME\mynameユーザー権限を使用している)が、ローカル使用している場合、同等に動作するようには思えないのVisual StudioでIIS Expressを使用する場合に問題なく、このコードを実行することができますよIIS(つまり、アプリケーションがIIS APPPOOL\DefaultAppPoolユーザを使用している場合)。

答えて

1

IISはサービスアカウントで実行され、PowerPointプロセスを開始する必要があります現在ログインしているインタラクティブ・ユーザー - それは誰でも。

多分、thisを試してみてください。それはIISプロセスでもうまく動作しますか? (ただし、CreateProcessAsUserの代わりにthis approachを使用してください)。

もう1つの方法は、現在のユーザーのsystem trayの下で実行される完全に別のものを書き込んで、Webアプリケーションによって送信される信号を「リッスン」させることです。名前付きパイプを開くか、ディレクトリのファイルをポーリングすることさえできます。例えば、あなたのWebアプリケーションは、PowerPointファイルを同意したフォルダにコピーすることができ、トレイアプリケーションはそれを(FileSystemWatcherを使用して)監視し、フォルダ内に表示されているものを自動的に開きます。トレイアプリは対話型ユーザーとして実行されるため、克服するクロスユーザー境界は存在しません。

+0

偉大な、それは意味がある、助けてくれてありがとう!将来の読者のために、私は参照した最初のリンクからの[this](http://stackoverflow.com/a/24122826/3850567)答えのライブラリを使用してそれを開くことができました。 – pinhead

0

Asp.netコードはサーバー側で実行されます。process.Start();はサーバー側でプロセスを開始します。クライアント側で開く場合は、IEのActiveXオブジェクトまたは他のブラウザと同等のものを使用できます。

+0

Visual StudioでIIS Expressを使用している場合(この場合、アプリケーションはローカルIISの代わりに 'IIS APPPOOL \ DefaultAppPool'の代わりに' MYNAME \ myname'アカウントで実行されています)、私は完全に間違っていない限り(確かに可能性があります)、正しい権限を持っていると仮定して起動するべきではないでしょうか? – pinhead

+0

Thatsはおそらくすべての権限を持っているローカルマシンにあります。他のハードルとは別に大きなセキュリティ上の意味があります。すべてのファイルを削除するランダムなアプリケーションや、クライアントマシン上でシステムコマンドを実行できる人もいます。クライアントがactivexなどをインストールするとき、クライアントはその結果を認識していると仮定します。 –

+0

ありがとう、私はActiveXを調べます。このアプリケーションは、IISの独自のローカルインスタンスを持つ複数の異なるマシン上で実行され、インターネットには接続されません。それでもセキュリティの問題がありますか?私はこれがベストプラクティスを実装していないことを知っており、デスクトップアプリケーションに適していますが、私はこのプロジェクトを継承しており、現時点では開発の選択肢が不明です。 – pinhead

関連する問題