デスクトップマシンでWCFサービスを利用できるようにするプログラムを実行しています。これは、通常のユーザーとしてログインしたときに実行する通常のWindowsフォームアプリケーションです。
外部のWebページからプログラムのステータスを確認できるように、WCFインターフェイスを配置しました。これはうまく機能し、実行中のプログラムのステータスを確認したり、必要に応じて変更したりすることもできます。
私ができない唯一のことは、プログラムを開始することです。Webページにアクセスしてもプログラムが実行されていない場合は、プログラムを起動できるようにしたいと思います。単純なProcess.Start(programEXE)は、プログラムの起動中はデスクトップ上になく、タスクマネージャーには表示されますが、表示されないため、十分ではありません。
クレデンシャルを作成し、それらのクレデンシャルを使用してプログラムを起動しようとしましたが、非常にあいまいな「プログラムを開始できませんでした」エラーで終了するか、クレデンシャルで開始しますが、デスクトップに表示されません。後者の場合、タスクマネージャーに自分の名前で表示されますが、実際のプログラムは表示されません。
では、ログインしているユーザーのデスクトップに表示されているサーバーでプログラムを起動するにはどうすればよいですか(ユーザーは1人だけで、そのユーザーは常にログインしています)。
また、これがセキュリティホールにならないようにするために私ができることは何ですか?私が持っていた考えの1つは、program.exeが配置されている1つのディレクトリへの読み取り権限のみを持ち、他の読み取りまたは書き込み権限を持たないユーザーIDの下で、独自の仮想ディレクトリでlauncher.aspxを実行することでした。他に何か提案はありますか?
最後に、明確にするために、私はユーザーのコンピューターで何も起動しようとはしていません。「プログラムの起動」リンクをクリックすると、クライアントマシンではなく、Webサーバーでプログラムが起動され、そのプログラムがサーバーにログインしているユーザーに表示されます。