0

プロジェクトには実行するサービスがあり、ログオフ時にコマンドを取得する必要があります。コンソールを介してコマンドを送信することはできますが、コンソールは実行できない別のプログラムです。必ずしも停止する必要はありませんが、何らかのコマンドを取得する必要があります。ログオフ イベントをキャッチできるサービスはありますか?

[10/17/12 10:45] - サービスはローカル システムとして実行されています。

[10/17/12 12:07] - 次のメソッドを追加しましたが、このメッセージでログに正常に書き込んでいるにもかかわらず、ログオフまたはコンピューターにログオンしても出力が得られません。解決策ですが、何か間違ったことをしている場合に備えて、ここに投稿したかったのです。

protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
        WriteToDebugLog(new string[] { "OnSessionChange()",
                                        DateTime.Now.ToLongTimeString() + " - Session change notice received: " + changeDescription.Reason.ToString() + "  Session ID: " + changeDescription.SessionId.ToString(),
                                       "Information" });
        base.OnSessionChange(changeDescription);
}
4

3 に答える 3

1

残念ながら、サービスはユーザーごとに実行できません。システム全体です。ユーザーがいつログオフしたかを検出するようにサービスを変更することはできますが、ユーザーが再度ログインしたときに再度開始されることはありません。別の方法として、2 番目のサービスを使用してログイン アクティビティを監視し ( @reneが指摘したように OnSessionChanged を使用)、それに応じて最初のサービスを開始/停止することもできます。

少しトリッキーで、2 つ目のサービスをインストールする必要があります。私は、スクリプトを使用したより単純なソリューションを好みます。

パワーシェル

2 つの PowerShell スクリプトを使用できます。これは、サービスを開始するためのものです。

Start-Service -name "YourServiceName"

これはサービスを停止することです:

Stop-Service -name "YourServiceName"

このスクリプトを実行するように設定するには、こちらをご覧ください。HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System!RunUserPSScriptsFirstつまり、必要に応じてスクリプトを実行するには、ポリシー構成を変更する必要があります。

「古い」シェル

PowerShell を使用する必要はありません。シェル コマンドを使用してサービスを開始/停止できます。

sc start YourServiceName

sc stop YourServiceName

ログオフ時にバッチ ファイル (またはコマンド) を実行する方法については、この投稿を参照してください。HKCU\Software\Policies\Microsoft\Windows\System\Scripts\Logoffつまり、ログオフ用とログオン用にエントリを追加する必要がHKCU\Software\Policies\Microsoft\Windows\System\Scripts\Logonあります (ただし、ログオン用のスクリプトを配置できる場所はさまざまです)。

于 2012-10-17T11:52:40.483 に答える
0

サービスを常に機能させ、特定のユーザーがログインしているかどうかを確認できます。ログインしているユーザーを確認する方法については、この SO の回答を参照してください。

https://stackoverflow.com/a/7065660/351383

于 2012-10-17T12:34:48.130 に答える
0

グループ ポリシーの追加は役に立ちますか? Windows 7 を使用している場合は、[スタート] をクリックし、「グループ ポリシー」と入力して、[グループ ポリシーの編集] をクリックします。そこから、[ユーザーの構成] > [Windows の設定] > [スクリプト (ログオン/ログオフ)] に移動します。

ここで、サービスを開始または停止するスクリプトを追加できます

于 2012-10-17T12:08:43.897 に答える