如何在 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
無法根據用戶群停止服務。這些服務是正在運行的作業系統中最需要的部分,程式也在啟動時使用它們所需的服務。您只能手動停止您正在運行的服務,而不是從系統中停止,但是如果您嘗試停止系統所需的服務,它不會讓您這樣做,而且無論如何,作業系統都會崩潰。
服務就像身體的四肢,可以停止一段時間,但是當您需要它時,您必須激活身體的該部分,因為有很多事情您無法控制,例如心跳。它取決於系統需要運行多少服務以及哪些服務。