1

サービスとアプリケーションの両方を持つ .NET アプリケーションがあります。アプリケーションが実行されていないときに警告するようにサービスに依頼し、その逆も同様です。これは、異なるログオン資格情報 (マシン 1-PC、2-PC、3-PC の通常のログイン ユーザー名、つまり bob、sam、fred) を持つ 1000 台以上のマシンで実行されています。

アプリケーションが実行されていないときに対処できるようにしたいのですが、コンピューターが再起動してログイン画面で待機すると、アプリが実行されていないと常に言われますが、実際には誰もログインしていません。ユーザーがログインしているかどうかを確認する方法は? 私はいくつかのハックを見てきましたが、これを達成するための具体的/エレガントな方法はありません。

そうすれば、サービスが実行されていることを確認できますが、誰かがマシンにログオンするまでアプリケーションが実行されているとは期待できません。

4

4 に答える 4

0

あなたのサービスが安定している (つまり、めったにクラッシュしない) 場合、私なら、サービスの開始時に一時的な値をどこかに (ファイル、レジストリ、データベース) 書き込みます。

次に、アプリケーションが実行されているのを初めて確認したときに、フラグをクリアします。

その後、フラグが設定されておらず、アプリケーションが実行されていない場合は、問題があります。

このアプローチでは、ユーザーがログオフするケースは解決されず、再起動シナリオのみが解決されるため、これがうまくいくとは 100% 確信が持てませんが、再起動シナリオについてのみ言及しているので、これがいくつかのアイデアを提供してくれることを願っています。

于 2012-04-04T01:25:34.270 に答える
0

アプリケーション内でオブジェクトを使用しGlobal\MYUniqueEvent、必要なセキュリティ資格情報を提供して、サービスがそれを確認できるようにすることができます。

Microsoft.Win32.SystemEvents.SessionSwitchユーザーがログインしていることを確認するためにリッスンすることもできます (個人的には使用していませんが、そこにあることは知っています)。例としてこれを見てください http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.asp

于 2012-04-04T01:28:07.717 に答える
0

このカップルのリンクは役に立ちます

注: これを行う方法として、はるかに優れた方法が組み込まれている可能性が十分にあります。serverfault は、多数のマシンの管理について質問するのに適したサイトである可能性があります (ツールを使用して疑わしいアクティビティを実行しない限り)。

于 2012-04-04T01:38:21.103 に答える