如何在 Windows XP 中为特定用户帐户禁用服务?
我有 Tomcat 和 DB2,以管理员身份使用,但作为普通用户我不需要它们。
此外,由于该帐户对某些文件没有权限,服务无法启动并反复显示烦人的错误。
我尝试使用 services.msc,但这些设置似乎是全局的,我无法从非管理员帐户更改它们。
答案1
您无法针对每个用户禁用服务,因为服务独立于登录用户运行。您能做的最好的事情就是在普通用户登录时自动停止服务。您可以使用批处理脚本执行此操作:
net stop <servicename>
由于用户可能没有停止服务的权限,您需要添加一个计划任务,将其配置为在指定用户登录时运行,并以管理员身份(或具有足够权限的其他用户)运行。
如果有多个普通用户,则需要为所有普通用户添加此计划任务,然后可能还需要为管理员添加启动服务的任务。
有关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
您可以将上述解决方案之一更进一步。我喜欢计划任务的想法。如果您熟悉 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
无法根据用户群停止服务。服务是运行操作系统最需要的部分,程序也会在启动时使用它们需要的服务。您只能手动停止正在运行的服务,而不能从系统中停止,但如果您尝试停止系统所需的服务,系统不会允许您这样做,顺便说一句,无论如何,这种情况都会发生,操作系统会崩溃。
服务就像身体的四肢,可以暂时停止,但当你需要它时,你必须激活身体的那个部位,因为有很多事情你无法控制,比如心跳。这取决于系统需要运行多少服务以及运行哪些服务。