ログオンするユーザーに応じてWindowsサービスを有効または無効にする

ログオンするユーザーに応じてWindowsサービスを有効または無効にする

したがって、特定のユーザーに対してのみアクティブにする必要があり、そうでない場合は不要なシステム リソースを消費するサービスであるため、ログオンするユーザーに応じてサービスを無効または有効にしたいと考えています。

最も簡単な方法は、ユーザーごとにバッチ ファイルを作成し (ローカル システムなので、ユーザー数はそれほど多くありません)、ユーザーが net stop/start または sc config を使用してログオンしたときにそのバッチ ファイルを実行することです。この方法の問題点は、これらのコマンドには昇格された権限が必要であり、ユーザーの 1 人が昇格された権限を持っていないことです。

これを行う別の方法はありますか? または、バッチ ファイルに一時的に昇格された権限を付与する回避策はありますか?

ありがとう。

答え1

昇格された権限の問題を回避するには、スケジュールされたタスクを使用できます。

各エンドユーザーについて:

  1. タスク スケジューラを起動し、新しいタスクを作成します (右側の [タスクの作成] を選択します)
  2. [全般]タブで、タスクを自分の(管理者)アカウントで、ログインしているかどうかに関係なく、最高の権限で実行するように設定します。
  3. トリガータブで、「ログオン時」トリガーを追加し、エンドユーザーアカウントを設定します。
  4. [アクション] タブで、「プログラムの開始」アクションを追加し、実行するコマンド ライン (「NET STOP サービス名」または「NET START サービス名」) を指定します。
  5. 新しくスケジュールされたタスクを保存します。

エンドユーザーの 1 人がログインすると、タスク スケジューラは管理者アカウントで NET START/STOP を実行し、ログイン時に昇格された権限を必要とせずにサービスを開始または停止します。

いくつか質問があります。両方のエンドユーザーがログインするとどうなりますか? すべてのログイン シーケンス (つまり、ユーザー A の次に B、ユーザー B の次に A) で正しい結果が得られますか? ログアウト シーケンスも考慮することを忘れないでください...

答え2

サービスはすべてのユーザー アカウントで同じように動作しています。したがって、バッチ ファイルで無効にすると、他のユーザー (管理者など) のアカウントに影響します。したがって、別のアカウントを作成しても意味がありません :(... 2 つのバッチ ファイルを作成してみてください。1 つは停止用、もう 1 つは開始用です。Windows がユーザーやニーズに応じて異なるサービスを使用できないことに驚きました。がっかりしました...

関連情報