Отключить службу для определенной учетной записи пользователя в 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

Невозможно остановить службы в соответствии с пользовательской базой. Службы являются частью работающей ОС, которая ей больше всего нужна, и программы также используют службы во время запуска, которые им нужны. Вы можете остановить только службы, которые запущены вами вручную, а не из системы, но если вы попытаетесь остановить службу, которая требуется системе, она не позволит вам сделать это, и, кстати, это произойдет в любом случае, ОС выйдет из строя.

Службы подобны конечностям тела, которые могут останавливаться на определенное время, но когда вам это понадобится, вы должны активировать эту часть тела, и поскольку есть много вещей, которые вы не можете контролировать, например, сердцебиение. Это зависит от системы, сколько и какие службы ей нужно запустить.

Связанный контент