0

デスクトップマシンでWCFサービスを利用できるようにするプログラムを実行しています。これは、通常のユーザーとしてログインしたときに実行する通常のWindowsフォームアプリケーションです。

外部のWebページからプログラムのステータスを確認できるように、WCFインターフェイスを配置しました。これはうまく機能し、実行中のプログラムのステータスを確認したり、必要に応じて変更したりすることもできます。

私ができない唯一のことは、プログラムを開始することです。Webページにアクセスしてもプログラムが実行されていない場合は、プログラムを起動できるようにしたいと思います。単純なProcess.Start(programEXE)は、プログラムの起動中はデスクトップ上になく、タスクマネージャーには表示されますが、表示されないため、十分ではありません。

クレデンシャルを作成し、それらのクレデンシャルを使用してプログラムを起動しようとしましたが、非常にあいまいな「プログラムを開始できませんでした」エラーで終了するか、クレデンシャルで開始しますが、デスクトップに表示されません。後者の場合、タスクマネージャーに自分の名前で表示されますが、実際のプログラムは表示されません。

では、ログインしているユーザーのデスクトップに表示されているサーバーでプログラムを起動するにはどうすればよいですか(ユーザーは1人だけで、そのユーザーは常にログインしています)。

また、これがセキュリティホールにならないようにするために私ができることは何ですか?私が持っていた考えの1つは、program.exeが配置されている1つのディレクトリへの読み取り権限のみを持ち、他の読み取りまたは書き込み権限を持たないユーザーIDの下で、独自の仮想ディレクトリでlauncher.aspxを実行することでした。他に何か提案はありますか?

最後に、明確にするために、私はユーザーのコンピューターで何も起動しようとはしていません。「プログラムの起動」リンクをクリックすると、クライアントマシンではなく、Webサーバーでプログラムが起動され、そのプログラムがサーバーにログインしているユーザーに表示されます。

4

1 に答える 1

1

私はあなたがそれをすることができないことをほぼ確信しています。IISはサービスとして実行され、特定のデスクトップ環境が関連付けられていません。あなたがやろうとしていることは、Web/サーバー環境では実際には機能しません。

WinフォームアプリをWindowsサービスに変更すると、Webサイトから開始/停止できるようになることをお勧めします。Windowsサービスで「デスクトップとの対話」を有効にすると、form.Show()を使用してアプリを現在のユーザーのデスクトップ環境に移動できると思います。

WinFormアプリを実行する必要があるのがあなただけの場合は、自分でアプリを起動してみませんか?自分のコンピューター以外のコンピューターでは使用されない可能性があるとのことです。そのため、ショートカットを使用してWinFormアプリを起動できる場合、ローカルWebサイトにアクセスしてローカルWinFormアプリを起動するのは複雑な方法のようです。

于 2009-09-02T23:42:26.557 に答える