Wie kann ich einen Dienst in Windows XP für ein bestimmtes Benutzerkonto deaktivieren?
Ich habe Tomcat und DB2, die ich als Administrator verwende, aber als einfacher Benutzer benötige ich sie nicht.
Da dieses Konto außerdem für einige Dateien keine Berechtigungen hat, können Dienste nicht gestartet werden und es werden wiederholt störende Fehler angezeigt.
Ich habe versucht, services.msc zu verwenden, aber diese Einstellungen scheinen global zu sein und ich kann sie von einem Nicht-Administrator-Konto aus nicht ändern.
Antwort1
Sie können Dienste nicht für jeden einzelnen Benutzer deaktivieren, da diese unabhängig vom angemeldeten Benutzer ausgeführt werden. Das Beste, was Sie tun können, ist, den Dienst automatisch zu stoppen, wenn sich der normale Benutzer anmeldet. Sie können dies mit einem Batch-Skript tun:
net stop <servicename>
Da der Benutzer wahrscheinlich nicht die Berechtigung zum Stoppen von Diensten hat, sollten Sie eine geplante Aufgabe hinzufügen und diese so konfigurieren, dass sie bei der Anmeldung des angegebenen Benutzers und als Administrator (oder anderer Benutzer mit ausreichenden Berechtigungen) ausgeführt wird.
Wenn es mehrere normale Benutzer gibt, müssen Sie diese geplante Aufgabe für alle hinzufügen und dann wahrscheinlich eine, die die Dienste für den Administrator startet.
Weitere Informationen zu net stop
und 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
Antwort2
Sie könnten eine der oben genannten Lösungen noch einen Schritt weiterführen. Mir gefällt die Idee der geplanten Aufgabe. Wenn Sie mit VbScript (oder eigentlich jeder anderen Programmiersprache) vertraut sind, könnten Sie ein Skript schreiben, um zu ermitteln, wer angemeldet ist, und dann die Shell „net stop“ ausführen, je nachdem, ob die Person zur Administratorgruppe gehört (oder, als schnellere, aber weniger flexible Methode, könnten Sie angeben, ob die Person nicht Ihr Benutzerkonto ist).
Hier ist der Rohentwurf eines Skripts, das ich einfach kopiert und eingefügt habe und das wahrscheinlich funktionieren würde:
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
Antwort3
Die Dienste sind maschinenweit. Es gibt kein Konzept dafür, welcher Benutzer in Bezug auf die Dienste derzeit an der Arbeitsstation angemeldet ist. Ich glaube, Tomcat kann unter dem Profil eines Benutzers gestartet werden (d. h., möglicherweise kann eine Verknüpfung verwendet werden, um den laufenden Prozess zu starten), aber ich bezweifle, dass DB2 im Benutzerbereich funktioniert.
Antwort4
Es ist nicht möglich, die Dienste je nach Benutzerbasis zu stoppen. Die Dienste sind der Teil des laufenden Betriebssystems, der am meisten benötigt wird, und die Programme verwenden die Dienste auch zum Zeitpunkt des Starts, wenn sie sie benötigen. Sie können die von Ihnen ausgeführten Dienste nur manuell und nicht vom System aus stoppen. Wenn Sie jedoch versuchen, den vom System benötigten Dienst zu stoppen, können Sie dies nicht tun, und das Betriebssystem stürzt in jedem Fall ab.
Dienste sind wie die Gliedmaßen des Körpers, die für eine gewisse Zeit stillstehen können, aber wenn Sie sie brauchen, müssen Sie diesen Körperteil aktivieren, und da es viele Dinge gibt, die Sie nicht kontrollieren können, wie den Herzschlag. Es hängt vom System ab, wie viele und welche Dienste ausgeführt werden müssen.