在 Windows XP 中停用特定使用者帳戶的服務

在 Windows XP 中停用特定使用者帳戶的服務

如何在 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

無法根據用戶群停止服務。這些服務是正在運行的作業系統中最需要的部分,程式也在啟動時使用它們所需的服務。您只能手動停止您正在運行的服務,而不是從系統中停止,但是如果您嘗試停止系統所需的服務,它不會讓您這樣做,而且無論如何,作業系統都會崩潰。

服務就像身體的四肢,可以停止一段時間,但是當您需要它時,您必須激活身體的該部分,因為有很多事情您無法控制,例如心跳。它取決於系統需要運行多少服務以及哪些服務。

相關內容