Назад | Перейти на главную страницу

Windows 7: Как остановить / запустить службу из командной строки (как это делает services.msc)?

Я разработал программу на Java, которая использует локальный экземпляр SQL Server для хранения своих данных. В некоторых установках экземпляр SQL Server иногда не запускается.

Пользователи могут решить эту проблему, вручную запустив экземпляр SQL Server (через services.msc).

Я думаю об автоматизации этой задачи: программное обеспечение будет проверять, доступен ли сервер базы данных, если не пытаться (повторно) запустить его. Проблема в том, что в той же учетной записи пользователя службы можно остановить / запустить через services.msc (без запроса UAC), но не через командную строку (без повышенных прав).

Операционная система, похоже, по-разному относится к services.msc:

c:\>sc start mssql$db1

[SC] StartService: OpenService FEHLER 5:
Zugriff verweigert (Доступ запрещен)

 c:\>net start mssql$db1

Systemfehler 5 aufgetreten. Zugriff verweigert (Доступ запрещен)

Итак, вопрос: как я могу остановить / запустить службу из java-программы / командной строки, не заставляя моих пользователей использовать services.msc (желательно с помощью встроенных инструментов)

При стандартной установке Windows 7, если вы запустите «services.msc» от имени администратора без повышенных прав, он запустится как процесс с повышенными правами (уровень целостности - «Высокий»).

Вот почему вы можете использовать services.msc для запуска и остановки служб.

В Vista вы бы получили приглашение UAC. В Windows 7 Microsoft немного смягчила UAC, чтобы он не раздражал. Windows предполагает, что вы хотите запускать services.msc с повышенными правами, потому что на самом деле нет смысла запускать его без повышенных прав.

Вы можете изменить настройки Win7 UAC на «Всегда уведомлять», теперь, если вы откроете services.msc, вы получите приглашение UAC.

Все это на самом деле не помогает решить вашу проблему, если пользователь не может открыть командную строку с повышенными привилегиями для использования «sc» или «net start», он / она не сможет запустить службу.

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

Возможно, вы сможете установить правильные привилегии с помощью sc.exe команда. Видеть эта статья MSDN для подробностей.