Windows XP で特定のユーザー アカウントのサービスを無効にするにはどうすればよいでしょうか?
管理者として使用している Tomcat と DB2 がありますが、一般ユーザーとしては必要ありません。
さらに、そのアカウントには一部のファイルに対する権限がないため、サービスが起動せず、煩わしいエラーが繰り返し表示されます。
services.msc を使用しようとしましたが、これらの設定はグローバルであるようで、管理者以外のアカウントからは変更できません。
答え1
サービスはログインしたユーザーとは独立して実行されるため、ユーザーごとにサービスを無効にすることはできません。最善の方法は、通常のユーザーがログインしたときにサービスを自動的に停止することです。これはバッチ スクリプトを使用して実行できます。
net stop <servicename>
ユーザーにはサービスを停止する権限がない可能性が高いため、スケジュールされたタスクを追加し、指定されたユーザーのログオン時に実行し、管理者 (または十分な権限を持つ他のユーザー) として実行するように構成する必要があります。
複数の通常ユーザーがいる場合は、全員に対してこのスケジュールされたタスクを追加し、その後に管理者用のサービスを開始するタスクを 1 つ追加する必要があります。
net stop
およびの詳細については、以下をご覧くださいnet start
。
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_stop.mspx?mfr=true
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_start.mspx?mfr=true
答え2
上記のソリューションの 1 つをさらに進めることができます。スケジュールされたタスクのアイデアが気に入っています。VbScript (または実際のプログラミング言語) に慣れている場合は、ログインしているユーザーを識別するスクリプトを作成し、そのユーザーが管理者グループに属しているかどうかに応じて "net stop " シェルを実行することができます (または、迅速ですが柔軟性に欠ける方法として、そのユーザーが自分のユーザー アカウントではないことを通知することもできます)。
以下は、おそらく機能すると思われる、コピーして貼り付けたスクリプトの大まかなドラフトです。
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
If objNetwork.UserName <> "YourAccountUsername" Then
' If they're not you, send the shell command to stop the service.
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objResult = objShell.Run("net stop <service name>", 1, True)
End If
答え3
サービスはマシン全体にわたります。サービスに関しては、現在どのユーザーがワークステーションにログインしているかという概念はありません。Tomcat はユーザーのプロファイルで起動できると思います (つまり、ショートカットを使用してプロセスの実行を開始できます)。ただし、DB2 がユーザー空間で動作するかどうかは疑問です。
答え4
ユーザー ベースに応じてサービスを停止することはできません。サービスは、実行中の OS で最も必要とされる部分であり、プログラムも起動時に必要に応じてサービスを使用します。システムからではなく手動で実行中のサービスのみを停止できますが、システムに必要なサービスを停止しようとすると、停止できません。いずれにせよ、このような状況が発生すると OS がクラッシュします。
サービスは、一定時間停止できる体の手足のようなものです。しかし、必要なときには体のその部分をアクティブにする必要があります。心拍など、制御できないものも多数あります。実行する必要があるサービスの数と種類は、システムによって異なります。