8

LocalSystem アカウントとしてサービスを実行すると、次のコードを使用して、現在のログイン アカウントで GUI プログラムを起動できます。

WTSGetActiveConsoleSessionId->WTSQueryUserToken->CreateProcessAsUser

ただし、個人アカウントでサービスを実行すると、GUI プログラムが表示されません。タスクマネージャで見ることはできますが。

サービスが個人アカウントで実行されている場合、GUI プログラムを起動するにはどうすればよいですか?

4

4 に答える 4

2

John と jdigital はどちらも正しいです。私の理解では、サービスは通常、デスクトップ アクセス (localsystem を使用する必要があります) またはネットワーク アクセス (実行するアカウントを指定する必要があります) のいずれかを持つことができます。

アプリを 2 つに分割する必要があります。一方はデスクトップと対話し、もう一方はネットワーク経由で通信します。その後、2 つの部分が互いに通信して、情報をエンド ユーザーに中継できます。

于 2009-06-04T15:02:02.117 に答える
0

それはすべて私が信じる許可と関係があります。

LocalSystemには、現在のユーザーになりすますのに十分な特権がありますが、アカウントにはありません。

資格情報の入力を求めるか、LocalSystemとして実行されるヘルパーサービスに接続することにより、サービスへのアクセス許可を拡張する方法を理解する必要があります。

(なぜLocalSystemではなく自分のアカウントで実行したいのですか?)

これを行うことのインとアウトを扱うもっと徹底的な答えがあると確信していますが、大まかに言えば、これが問題だと思います。

于 2009-06-04T03:45:33.703 に答える
0

間違ったウィンドウ ステーションまたはデスクトップで実行している可能性があります。Window Stations and Desktops に関するこのMicrosoft リファレンスを参照してください。

于 2009-06-04T05:09:13.880 に答える
0

あなたがやろうとしていることは、セキュリティの脆弱性と見なされる可能性があると思います。また、場合によっては機能しない可能性もあります。jdigital は、ウィンドウ ステーションと関係があり、現在のユーザーのウィンドウ ステーションとデスクトップにアクセスしようとしているという点で正しいと思います。現在複数のウィンドウ ステーションがあるターミナル サービス サーバーの下にいる場合、これは非常に混乱します。マイクロソフトは本当にあなたが望むものを望んでおらず、Windows のリリースごとにそれを難し​​くしています。

あなたの最善の策は、別の角度から問題を解決し、ユーザーが (手動またはログイン時に自動的に) 実行し、サービスと対話する GUI アプリケーションを作成することだと思います。

于 2009-06-04T06:33:00.477 に答える