WindowsサービスでGUIプログラムを起動するには?
-
09-09-2019 - |
質問
、私は現在のログインアカウントでGUIプログラムを起動するには、次のコードを使用することができます:
WTSGetActiveConsoleSessionId-> WTSQueryUserToken-> CreateProcessAsUser
私は私の個人的なアカウントとしてサービスを実行すると、しかし、GUIプログラムは表示されません。でも、私は、タスクマネージャでそれを見ることができます。
サービスは私の個人的なアカウントで実行されたときに私は、GUIプログラムを起動するために何をすべきか?
解決
ジョンとの両方の右jdigitalある - 私の理解から、サービスは一般的に(あなたが下に実行するアカウントを指定する必要があります)デスクトップアクセス(あなたがLocalSystemを使用する必要があります)、またはネットワークアクセスのいずれかを持つことができます。
。 ネットワーク上で話をするのデスクトップと相互作用する1 -あなたは2を2つにアプリケーションを分割する必要があるでしょう。 2つの部分は、エンドユーザーに情報を中継するためにお互いに話をすることができます。
他のヒント
それはすべて私が信じている権限で行う必要があります。
ローカルシステムは、現在のユーザーを偽装するための十分な権限を持っていますが、あなたのアカウントにはありません。
あなたは、どちらかの資格情報の入力を求める、またはLocalSystemとして実行されるヘルパーサービスに接続することによって、あなたのサービスへのアクセス権を拡張する方法を把握する必要があると思います。
(あなたの代わりにローカルシステムのアカウントで実行したいのはなぜ?)
私はこれを行うのでの出入りの対処はるかに徹底した答えがあると確信しているが、高いレベルで私は、これが問題だと思います。
あなたは間違ったウィンドウステーションやデスクトップで実行される場合があります。ウィンドウステーションとデスクトップの上でこの、Microsoftのリファレンスを参照してください。ます。
私は何をしようとするセキュリティ上の脆弱性を考慮することができると信じています。また、同様にいくつかのケースでは動作しそうではありません。私はそれがウィンドウステーションに関係していると、現在のユーザーのウィンドウステーションへのアクセスを取得しようと、それはデスクトップだという点でjdigitalが正しいことだと思います。あなたが複数の現在のウィンドウステーションがあるターミナルサービスサーバーの下の下にあるとき、これは多くのことを混同しています。マイクロソフトは本当にあなたが望むものにあなたを望んでいないと、彼らは窓のすべてのリリースでそれが難しくています。
私はあなたの最善の策は、別の角度から問題を解決し、ちょうどそれがあなたのサービスに話す(manaullyまたは自動的にログイン時)、ユーザーが実行され、GUIアプリケーションを作成することだと思います。