Запуск службы от имени пользователя windows

По умолчанию обычные пользователи, не обладающие правами администратора системы, не могут управлять системными (и большинством прикладных) службами

Содержание

  • 1 Встроенная утилита SC.exe (Service controller)
  • 2 SubInACL: назначаем права на службы с помощью утилиты Sysinternals
  • 3 Process Explorer: Установка разрешений на службу
  • 4 Шаблон безопасности (Security Template)
  • 5 Управление правами служб через групповые политики
  • 6 Назначаем разрешения на службу с помощью PowerShell

По умолчанию обычные пользователи, не обладающие правами администратора системы, не могут управлять системными (и большинством прикладных) службами Windows. Это означает, что они не могут останавливать, запускать (перезапускать), изменять настройки и разрешения таких служб. В некоторых случаях все-таки требуется, чтобы у пользователя были права на перезапуск и управление определенными службами. В этой статье мы разберем несколько способов управления правами на службы Windows. В частности, мы покажем, как предоставить обычному пользователю, без прав администратора Windows, права на запуск, остановку и перезапуск определенной службы.

Предположим, нам нужно предоставить доменной учетной записи contoso user права на перезапуск службы печати (Print Spooler) с системным именем Spooler.

Простого и удобного встроенного инструмента для управления разрешениями на службы в Windows нет. Мы рассмотрим несколько способ предоставления пользователю прав на службу:

Какой из них проще и удобнее – решать Вам.

Встроенная утилита SC.exe (Service controller)

Стандартный, встроенный в Windows способ управления правами на службы системы предусматривает использование утилиты sc.exe (Service Controller).

Главная, проблема – зубодробительный синтаксис формата предоставления прав на сервис (формат SDDL).

Получить текущие права на службу можно так:

sc.exe sdshow Spooler

Что значат все эти символы?

Первая буква после скобок означает: разрешить (A, Allow) или запретить (D, Deny).

Следующая пачка символов – назначаемые права.

Последние 2 буквы, объекты (группа пользователей или SID), котором предоставляются права. Есть список предустановленных групп.

AO Account operators
RU Alias to allow previous Windows 2000
AN Anonymous logon
AU Authenticated users
BA Built-in administrators
BG Built-in guests
BO Backup operators
BU Built-in users
CA Certificate server administrators
CG Creator group
CO Creator owner
DA Domain administrators
DC Domain computers
DD Domain controllers
DG Domain guests
DU Domain users
EA Enterprise administrators
ED Enterprise domain controllers
WD Everyone
PA Group Policy administrators
IU Interactively logged-on user
LA Local administrator
LG Local guest
LS Local service account
SY Local system
NU Network logon user
NO Network configuration operators
NS Network service account
PO Printer operators
PS Personal self
PU Power users
RS RAS servers group
RD Terminal server users
RE Replicator
RC Restricted code
SA Schema administrators
SO Server operators
SU Service logon user

Можно вместо предустановленной группы явно указать пользователя или группу по SID. Получить SID пользователя для текущего пользователя можно с помощью команды:

или для любого пользователя домена с помощью PowerShell комаднлета Get-ADUser:

Get-ADUser -Identity ‘iipeshkov’ | select SID

К примеру, права пользователю на службу spooler могут быть предоставлены следующей командой:

SubInACL: назначаем права на службы с помощью утилиты Sysinternals

Гораздо проще воспользоваться консольной утилитой SubInACL из комплекта Sysinternals от Марка Руссиновича (права на которую вместе с автором теперь принадлежат Microsoft). Синтаксис этой утилиты гораздо проще и удобнее для восприятия. Как предоставить права перезапуска на службу с помощью SubInACL:

  1. Скачайте msi со страницы (https://www.microsoft.com/en-us/download/details.aspx? />
  2. В командной строке с правами администратора перейдите в каталог с утилитой: cd “ C:Program Files (x86)Windows Resource KitsTools) ”
  3. Выполните команду: subinacl.exe /service Spooler /grant=contoso user=PTO

Если нужно предоставить права на службу, запущенную на удаленном компьютере, синтаксис будет такой:
subinacl /SERVICE msk-buh01spooler /grant=contoso user=F

  • Осталось войти в данную систему под учетной записью пользователя и попробовать перезапустить службу командами:
    net stop spooler
    net start spooler
  • Если вы все сделали верно, служба должна остановиться и запуститься заново.

    Process Explorer: Установка разрешений на службу

    Достаточно просто изменить разрешения на службу с помощью еще одной утилиты Sysinternals — Process Explorer. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:WindowsSystem32spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.

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

    Шаблон безопасности (Security Template)

    Более наглядный (но и требующий большего количества действий) графический способ управления правами на службы – с помощью шаблонов безопасности. Для реализации, откройте консоль mmc.exe и добавьте оснастку Security Templates.

    Создадим новый шаблон (New Template).

    Задайте имя нового шаблона и перейдите в раздел System Services. В списке служб выберите свою службу Print Spooler и откройте ее свойства.

    Установите тип запуска (Automatic) и нажмите кнопку Edit Security.

    С помощью кнопки Add добавьте учетную запись пользователя или группы, которым нужно предоставить права. В нашем случае, нам достаточно права Start, Stop and pause.

    Сохраните шаблон (Save).

    Если открыть этот файл, можно увидеть, что данные о правах доступа сохраняются в уже ранее упомянутом SDDL формате. Полученная таким образом строка может быть использована в качестве аргументы команды sc.exe.

    Осталось с помощью оснастки Security Configuration and Analysis создать новую базу данных (Open Database) и импортировать наш шаблон безопасности из файла Spooler User Rights.inf.

    Применим шаблон, вызвав из контекстного меню команду Configure Computer Now.

    Теперь можно под пользователем проверить, что у него появились права на управление службой Print Spooler.

    Управление правами служб через групповые политики

    Если нужно раздать пользователям права запуска/остановки сервиса сразу на множестве северов или компьютерах домена, проще всего воспользоваться возможностями групповых политик (GPO).

    1. Создайте новую или отредактируйте существующую GPO, назначьте ее на нужный контейнер с компьютерами в Active Directory. Перейдите в раздел политик Computer configuration -> Windows Settings -> Security Settings -> System Services.
    2. Найдите службу Spooler и аналогично ранее рассмотренной методике предоставьте права пользователю. Сохраните изменения.

    Назначаем разрешения на службу с помощью PowerShell

    В галерее TechNet имеется отдельный неофициальный модуль PowerShell для управления разрешениями на разные объекты Windows — PowerShellAccessControl Module (скачать его можно здесь). Этот модуль позволяет он управлять правами на службы. Импортируйте модуль в свою сессию:

    Получить эффективные разрешения на конкретную службу из PowerShell можно так:

    Get-Service spooler | Get-EffectiveAccess -Principal corp user

    Чтобы предоставить обычному пользователю права на запуск и остановку службы, выполните:

    Get-Service spooler | Add-AccessControlEntry -ServiceAccessRights Start,Stop -Principal corp user

    Итак, мы разобрали несколько способов управления правами на службы Windows, позволяющих предоставить произвольному пользователю любые права на службы системы. В том случае, если пользователю требуется удаленный доступ к службе, без предоставления ему прав локального входа в систему, нужно разрешить пользователю удаленно опрашивать Service Control Manager.

    По умолчанию большинство сервисов запускаются автоматически при открытии сеанса Windows с полномочиями системы или учетной записи пользователя, открывшего сеанс, но вы можете перенастроить этот режим таким образом, что служба будет запускаться при загрузке системы от имени учетной записи другого пользователя. Для этого:

    1. Откройте консоль Службы (Services).

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

    3. В контекстном меню выберите пункт Свойства (Properties).

    4. В открывшемся диалоговом окне перейдите ко вкладке Вход в систему (Log on, Рис. 3).

    Рис. 3. Настройка полномочий сервиса при входе в систему

    5. Если вы хотите, чтобы при загрузке Windows служба запускалась с полномочиями операционной системы, установите переключатель Вход в систему (Log on) в положение С системной учетной записью (Local system account). Чтобы запускать сервис от имени другого пользователя, установите переключатель в позицию С учетной записью (This account), и введите название учетной записи в расположенном рядом поле, а в размещающихся ниже полях Пароль (Password) и Подтверждение (Confirm password) дважды наберите присвоенный данному профилю пароль. Для выбора профиля можно воспользоваться кнопкой Обзор (Browse).

    6. Чтобы разрешить или запретить автоматический запуск службы для различных учетных записей, выберите соответствующий профиль в расположенном в нижней части окна списке и нажмите кнопку Разрешить (Enable) или Запретить (Disable).

    7. Если установлен флажок Разрешить взаимодействие с Рабочим столом (Allow service to interact with desktop), служба автоматически подключит интерфейс, с которым сможет взаимодействовать любой пользователь, вошедший в систему после запуска службы.

    8. Щелкните мышью на кнопке ОК чтобы внесенные вами изменения вступили в силу.

    Примечание. Далеко не все сервисы поддерживают возможность настройки запуска от имени другой учетной записи.

    Дата добавления: 2015-09-18 ; просмотров: 1087 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

    Включение службы «Запуск от имени» или «Вторичный вход в систему» на компьютере под управлением Windows XP, Windows Vista, Windows 7.

    Служба, необходимая для запуска команды Запуск от имени, по умолчанию загружается автоматически при установке Windows.Однако эту службу может отключить администратор или дурной банк-клиент. Если служба была отключена, то для ее включения выполните следующие действия.

    Войдите в систему с помощью учетной записи администратора или пользователя с правами администратора.

    Щелкните правой кнопкой мыши значок Мой компьютер и выберите пункт Управление.

    В оснастке «Управление компьютером» разверните узел Службы и приложения и выберите элемент Службы.

    На панели сведений щелкните правой кнопкой мыши службу Вторичный вход в систему и выберите команду Свойства.

    В диалоговом окне Свойства установите Тип запуска в Авто и нажмите кнопку Пуск.

    После запуска службы нажмите OK, чтобы закрыть диалоговое окно Свойства, а затем закройте оснастку «Управление компьютером».

    Установить галочку взаимодействие с рабочим.

    Необходимая для работы команды Запуск от имени служба активирована на компьютере. При попытке запустить программу, например консоль MMC или элемент панели управления, из сетевой папки с помощью команды Запуск от имени она может не запуститься, если учетные данные, используемые для подключения к общему сетевому ресурсу, отличаются от учетных данных, используемых для запуска программы. Учетные данные, используемые для запуска приложения, могут не обеспечивать доступ к сетевому ресурсу. Службы «Запуск от имени» и «Вторичный вход в систему» принимают только проверку подлинности пароля. Если политики требуют входа с помощью смарт-карты, то команда Запуск от имени работать не будет. Команда Запуск от имени не может использоваться с учетной записью LocalSystem в Windows XP с пакетом обновления 2 (SP2). Следует учесть, что при инсталляции некоторых банк-клиентов служба «Запуск от имени» не работает из-за того, что отключается «Контроль учетных записей» (UAC). Необходимо включить «Контроль учетных записей» (UAC) и перезагрузить компьютер.

    По умолчанию обычные пользователи (без прав администратора) не могут управлять системными службами Windows. Это означает, что пользовали не могут остановить, запустить (перезапустить), изменить настройки и разрешения служб Windows. В этой статье мы разберем несколько способов управления правами на службы Windows. В частности, мы покажем, как предоставить обычному пользователю, без прав администратора Windows, права на запуск, остановку и перезапуск определенной службы.

    Предположим, нам нужно предоставить доменной учетной записи contosotuser права на перезапуск службы печати (Print Spooler) с системным именем Spooler. При попытке перезапустить службу под пользователей появляется ошибка:
    System error 5 has occurred. Access is denied.

    net stop - system error 5 - нет прав на перезапуск службы

    Простого и удобного встроенного инструмента для управления разрешениями на службы в Windows нет. Мы рассмотрим несколько способ предоставления пользователю прав на службу:

    Содержание:

    • Управление правами на службы с помощью встроенной утилиты SC.exe (Service controller)
    • Предоставление прав на перезапуск службы с помощью SubInACL
    • Process Explorer: Установка разрешений на службу
    • Назначаем разрешения на службу с помощью PowerShell
    • Используем шаблоны безопасности (Security Templates) для управления разрешениями служб
    • Управление правами служб через групповые политики

    Какой из них проще и удобнее – решать Вам.

    Управление правами на службы с помощью встроенной утилиты SC.exe (Service controller)

    Стандартный, встроенный в Windows способ управления правами на службы системы предусматривает использование консольной утилиты sc.exe (Service Controller).

    Главная, проблема – зубодробительный синтаксис формата предоставления прав на сервис (используется формат SDDL — Security Description Definition Language).

    Получить текущие разрешения на службу в виде SDDL строки можно так:

    sc.exe sdshow Spooler

    sc.exe sdshow - узнать текущие права на службу

    D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA) (A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

    Что значат все эти символы?

    S: — System Access Control List (SACL)
    D: — Discretionary ACL (DACL)

    Первая буква после скобок означает: разрешить (A, Allow) или запретить (D, Deny).

    Следующая пачка символов – назначаемые права.

    CC — SERVICE_QUERY_CONFIG (запрос настроек служы)
    LC — SERVICE_QUERY_STATUS (опрос состояния служы)
    SW — SERVICE_ENUMERATE_DEPENDENTS (опрос зависимостей)
    LO — SERVICE_INTERROGATE
    CR — SERVICE_USER_DEFINED_CONTROL
    RC — READ_CONTROL
    RP — SERVICE_START (запуск службы)
    WP — SERVICE_STOP (остановка службы)
    DT — SERVICE_PAUSE_CONTINUE (приостановка, продолжение службы)

    Последние 2 буквы — объекты (группа пользователей или SID), котором нужно назначить права. Есть список предустановленных групп.

    AU Authenticated Users

    AO Account operators
    RU Alias to allow previous Windows 2000
    AN Anonymous logon
    AU Authenticated users
    BA Built-in administrators
    BG Built-in guests
    BO Backup operators
    BU Built-in users
    CA Certificate server administrators
    CG Creator group
    CO Creator owner
    DA Domain administrators
    DC Domain computers
    DD Domain controllers
    DG Domain guests
    DU Domain users
    EA Enterprise administrators
    ED Enterprise domain controllers
    WD Everyone
    PA Group Policy administrators
    IU Interactively logged-on user
    LA Local administrator
    LG Local guest
    LS Local service account
    SY Local system
    NU Network logon user

    NO Network configuration operators
    NS Network service account
    PO Printer operators
    PS Personal self
    PU Power users
    RS RAS servers group
    RD Terminal server users
    RE Replicator
    RC Restricted code
    SA Schema administrators
    SO Server operators
    SU Service logon user

    Можно вместо предустановленной группы явно указать пользователя или группу по SID. Получить SID пользователя для текущего пользователя можно с помощью команды:

    whoami /user

    или для любого пользователя домена с помощью PowerShell комаднлета Get-ADUser:

    Get-ADUser -Identity 'iipeshkov' | select SID

    SID доменной группы можно получить с помощью командлета Get-ADGroup:

    Get-ADGroup -Filter {Name -like "msk-helpdesk*"} | Select SID

    Чтобы назначить SDDL строку с правами на определённую службу, используется команда sc sdset. К примеру, права пользователю на службу spooler могут быть предоставлены следующей командой:
    sc sdset Spooler "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

    Предоставление прав на перезапуск службы с помощью SubInACL

    Для управления правами служб Windows гораздо проще воспользоваться консольной утилитой SubInACL из комплекта Sysinternals от Марка Руссиновича (права на которую вместе с автором теперь принадлежат Microsoft). Синтаксис этой утилиты гораздо проще и удобнее для восприятия. Рассмотрим, как предоставить права перезапуск службы с помощью SubInACL:

    1. Скачайте subibacl,msi со страницы (https://www.microsoft.com/en-us/download/details.aspx?id=23510) и установите ее на целевой системе;SubInACL - управление правами служб
    2. В командной строке с правами администратора перейдите в каталог с утилитой:
      cd “C:Program Files (x86)Windows Resource KitsTools
    3. Выполните команду:
      subinacl.exe /service Spooler /grant=contosotuser=PTO
      subinacl.exe /service

      Примечание. В данном случае мы дали пользователю права на приостановку (Pause/Continue), запуск (Start) и остановку (Stop) службы. Полный список доступных разрешений:
      F : Full Control
      R : Generic Read
      W : Generic Write
      X : Generic eXecute
      L : Read controL
      Q : Query Service Configuration
      S : Query Service Status
      E : Enumerate Dependent Services
      C : Service Change Configuration
      T : Start Service
      O : Stop Service
      P : Pause/Continue Service
      I : Interrogate Service
      U : Service User-Defined Control Commands

      Если нужно предоставить права на службу, запущенную на удаленном компьютере, используйте следующий синтаксис команды subinacl:
      subinacl /SERVICE \msk-buh01spooler /grant=contosotuser=F

    4. Осталось войти в данную систему под учетной записью пользователя и попробовать перезапустить службу командами:
      net stop spooler
      net start spooler


      или
      sc stop spooler && sc start spooler

      перезапуск службы коммандой sc

    Если вы все сделали верно, служба должна перезапуститься.

    Чтобы лишить пользователя назначенных прав на службу в subinacl.exe используется параметр
    /revoke
    , например:

    subinacl.exe /service Spooler /revoke=contosotuser

    Process Explorer: Установка разрешений на службу

    Достаточно просто изменить разрешения на службу с помощью еще одной утилиты Sysinternals — Process Explorer. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:WindowsSystem32spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.

    process explorer свойства службы

    Нажмите на кнопку Permissions и в открывшемся окне добавьте пользователя или группу, которой нужно предоставить права на сервис и выберите уровень полномочий (Full Control/Write/Read).

    procexp - выдать права на службу

    Назначаем разрешения на службу с помощью PowerShell

    В галерее TechNet имеется отдельный неофициальный модуль PowerShell для управления разрешениями на разные объекты Windows — PowerShellAccessControl Module (скачать его можно здесь). Этот модуль позволяет управлять правами на службы. Импортируйте модуль в свою PS сессию:

    Import-Module PowerShellAccessControl

    Получить эффективные разрешения на конкретную службу из PowerShell можно так:

    Get-Service spooler | Get-EffectiveAccess -Principal corptuser

    Чтобы предоставить обычному пользователю права на запуск и остановку службы, выполните:

    Get-Service spooler | Add-AccessControlEntry -ServiceAccessRights Start,Stop -Principal corptuser

    Используем шаблоны безопасности (Security Templates) для управления разрешениями служб

    Более наглядный (но и требующий большего количества действий) графический способ управления правами на службы – с помощью шаблонов безопасности. Для реализации, откройте консоль mmc.exe и добавьте оснастку Security Templates.

    mmc оснастка Security TemplatesСоздадим новый шаблон (New Template).

    Новый шаблон безопасностиЗадайте имя нового шаблона и перейдите в раздел System Services. В списке служб выберите свою службу Print Spooler и откройте ее свойства.

    Установите тип запуска (Automatic) и нажмите кнопку Edit Security.

    Свойства службы

    С помощью кнопки Add добавьте учетную запись пользователя или группы, которым нужно предоставить права. В нашем случае, нам достаточно права Start, Stop and pause.

    Разрешения службыСохраните шаблон (Save).

    Примечание. Содержимое шаблона безопасности сохраняется в inf файле в каталоге C:UsersusernameDocumentsSecurityTemplates.

    Если открыть этот файл, можно увидеть, что данные о правах доступа сохраняются в уже упомянутом ранее SDDL формате. Полученная таким образом строка может быть использована в качестве аргументы команды sc.exe.

    [Unicode]
    Unicode=yes
    [Version]
    signature="$CHICAGO$"
    Revision=1
    [Service General Setting]
    "Spooler",2,"D:AR(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;RPWPDTRC;;;S-1-5-21-3243688314-1354026805-3292651841-1127)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

    inf файл шаблона безопасностиОсталось с помощью оснастки Security Configuration and Analysis создать новую базу данных (Open Database) и импортировать новый шаблон безопасности из файла Spooler User Rights.inf.

    Импорт шаблона безопасностиПримените шаблон, вызвав из контекстного меню команду Configure Computer Now.

    Configure Computer Now

    Теперь можно под пользователем проверить, что у него появились права на управление службой Print Spooler.

    Управление правами служб через групповые политики

    Если нужно раздать пользователям права запуска/остановки сервиса сразу на множестве северов или компьютерах домена, проще всего воспользоваться возможностями групповых политик (GPO).

    1. Создайте новую или отредактируйте существующую GPO, назначьте ее на нужный контейнер с компьютерами в Active Directory. Перейдите в раздел политик Computer configuration -> Windows Settings -> Security Settings -> System Services;Групповая политика управления службами
    2. Найдите службу Spooler и аналогично методике с шаблонами безопасности, рассмотренной ранее, предоставьте права пользователю. Сохраните изменения;
    3. Осталось дождаться обновления политик на клиентских компьютерах и проверить применение новых разрешений на службу.

    Где хранятся разрешения служб Windows?

    Настройки безопасности для все служб, для которых вы изменили разрешения по-умолчанию хранятся в собственной ветке реестра HKLMSystemCurrentControlSetServices<servicename>Security в параметре Security типа REG_BINARY.

    разрешения на службу хранятся в реестре

    Это означает, что одним из способов установки аналогичных разрешений на других компьютерах может быть экспорт/импорт данного параметра реестра (в том числе через GPO).

    Итак, мы разобрали несколько способов управления правами на службы Windows, позволяющих предоставить произвольному пользователю любые права на системные службы. Если пользователю требуется удаленный доступ к службе, без предоставления ему прав локального входа в систему, нужно разрешить пользователю удаленно опрашивать Service Control Manager.

    Below I have put together everything I learned about Starting/Stopping a Windows Service from a non-Admin user account, if anyone needs to know.

    Primarily, there are two ways in which to Start / Stop a Windows Service.
    1. Directly accessing the service through logon Windows user account.
    2. Accessing the service through IIS using Network Service account.

    Command line command to start / stop services:

    C:/> net start <SERVICE_NAME>
    C:/> net stop <SERVICE_NAME>
    

    C# Code to start / stop services:

    ServiceController service = new ServiceController(SERVICE_NAME);
    
    //Start the service
    if (service.Status == ServiceControllerStatus.Stopped)
    {
          service.Start();
          service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10.0));
    }
    
    //Stop the service
    if (service.Status == ServiceControllerStatus.Running)
    {
          service.Stop();
          service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10.0));
    }
    

    Note 1:
    When accessing the service through IIS, create a Visual Studio C# ASP.NET Web Application and put the code in there. Deploy the WebService to IIS Root Folder (C:inetpubwwwroot) and you’re good to go.
    Access it by the url http:///.

    1. Direct Access Method

    If the Windows User Account from which either you give the command or run the code is a non-Admin account, then you need to set the privileges to that particular user account so it has the ability to start and stop Windows Services. This is how you do it.
    Login to an Administrator account on the computer which has the non-Admin account from which you want to Start/Stop the service. Open up the command prompt and give the following command:

    C:/>sc sdshow <SERVICE_NAME>
    

    Output of this will be something like this:

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
    

    It lists all the permissions each User / Group on this computer has with regards to .

    A description of one part of above command is as follows:
    
        D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)
    
    It has the default owner, default group, and it has the Security descriptor control flags (A;;CCLCSWRPWPDTLOCRRC;;;SY):
    
    ace_type - "A": ACCESS_ALLOWED_ACE_TYPE,
    ace_flags - n/a,
    rights - CCLCSWRPWPDTLOCRRC,  please refer to the Access Rights and Access Masks and Directory Services Access Rights
    CC: ADS_RIGHT_DS_CREATE_CHILD - Create a child DS object.
    LC: ADS_RIGHT_ACTRL_DS_LIST - Enumerate a DS object.
    SW: ADS_RIGHT_DS_SELF - Access allowed only after validated rights checks supported by the object are performed. This flag can be used alone to perform all validated rights checks of the object or it can be combined with an identifier of a specific validated right to perform only that check.
    RP: ADS_RIGHT_DS_READ_PROP - Read the properties of a DS object.
    WP: ADS_RIGHT_DS_WRITE_PROP - Write properties for a DS object.
    DT: ADS_RIGHT_DS_DELETE_TREE - Delete a tree of DS objects.
    LO: ADS_RIGHT_DS_LIST_OBJECT - List a tree of DS objects.
    CR: ADS_RIGHT_DS_CONTROL_ACCESS - Access allowed only after extended rights checks supported by the object are performed. This flag can be used alone to perform all extended rights checks on the object or it can be combined with an identifier of a specific extended right to perform only that check.
    RC: READ_CONTROL - The right to read the information in the object's security descriptor, not including the information in the system access control list (SACL). (This is a Standard Access Right, please read more http://msdn.microsoft.com/en-us/library/aa379607(VS.85).aspx)
    object_guid - n/a,
    inherit_object_guid - n/a,
    account_sid - "SY": Local system. The corresponding RID is SECURITY_LOCAL_SYSTEM_RID.
    

    Now what we need to do is to set the appropriate permissions to Start/Stop Windows Services to the groups or users we want. In this case we need the current non-Admin user be able to Start/Stop the service so we are going to set the permissions to that user. To do that, we need the SID of that particular Windows User Account. To obtain it, open up the Registry (Start > regedit) and locate the following registry key.

    LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
    

    Under that there is a seperate Key for each an every user account in this computer, and the key name is the SID of each account. SID are usually of the format S-1-5-21-2103278432-2794320136-1883075150-1000. Click on each Key, and you will see on the pane to the right a list of values for each Key. Locate «ProfileImagePath», and by it’s value you can find the User Name that SID belongs to. For instance, if the user name of the account is SACH, then the value of «ProfileImagePath» will be something like «C:UsersSach». So note down the SID of the user account you want to set the permissions to.

    Note2:
    Here a simple C# code sample which can be used to obtain a list of said Keys and it’s values.

    //LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList RegistryKey
    RegistryKey profileList = Registry.LocalMachine.OpenSubKey(keyName);
    
    //Get a list of SID corresponding to each account on the computer
    string[] sidList = profileList.GetSubKeyNames();
    
    foreach (string sid in sidList)
    {
        //Based on above names, get 'Registry Keys' corresponding to each SID
        RegistryKey profile = Registry.LocalMachine.OpenSubKey(Path.Combine(keyName, sid));
    
        //SID
        string strSID = sid;
        //UserName which is represented by above SID    
        string strUserName = (string)profile.GetValue("ProfileImagePath");
    }
    

    Now that we have the SID of the user account we want to set the permissions to, let’s get down to it. Let’s assume the SID of the user account is S-1-5-21-2103278432-2794320136-1883075150-1000.
    Copy the output of the [sc sdshow ] command to a text editor. It will look like this:

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
    

    Now, copy the (A;;CCLCSWRPWPDTLOCRRC;;;SY) part of the above text, and paste it just before the S:(AU;… part of the text. Then change that part to look like this:
    (A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)

    Then add sc sdset at the front, and enclose the above part with quotes. Your final command should look something like the following:

    sc sdset <SERVICE_NAME> "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
    

    Now execute this in your command prompt, and it should give the output as follows if successful:

    [SC] SetServiceObjectSecurity SUCCESS
    

    Now we’re good to go! Your non-Admin user account has been granted permissions to Start/Stop your service! Try loggin in to the user account and Start/Stop the service and it should let you do that.

    2. Access through IIS Method

    In this case, we need to grant the permission to the IIS user «Network Services» instead of the logon Windows user account. The procedure is the same, only the parameters of the command will be changed. Since we set the permission to «Network Services», replace SID with the string «NS» in the final sdset command we used previously. The final command should look something like this:

    sc sdset <SERVICE_NAME> "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;NS)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
    

    Execute it in the command prompt from an Admin user account, and voila! You have the permission to Start / Stop the service from any user account (irrespective of whether it ia an Admin account or not) using a WebMethod. Refer to Note1 to find out how to do so.

    Below I have put together everything I learned about Starting/Stopping a Windows Service from a non-Admin user account, if anyone needs to know.

    Primarily, there are two ways in which to Start / Stop a Windows Service.
    1. Directly accessing the service through logon Windows user account.
    2. Accessing the service through IIS using Network Service account.

    Command line command to start / stop services:

    C:/> net start <SERVICE_NAME>
    C:/> net stop <SERVICE_NAME>
    

    C# Code to start / stop services:

    ServiceController service = new ServiceController(SERVICE_NAME);
    
    //Start the service
    if (service.Status == ServiceControllerStatus.Stopped)
    {
          service.Start();
          service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10.0));
    }
    
    //Stop the service
    if (service.Status == ServiceControllerStatus.Running)
    {
          service.Stop();
          service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10.0));
    }
    

    Note 1:
    When accessing the service through IIS, create a Visual Studio C# ASP.NET Web Application and put the code in there. Deploy the WebService to IIS Root Folder (C:inetpubwwwroot) and you’re good to go.
    Access it by the url http:///.

    1. Direct Access Method

    If the Windows User Account from which either you give the command or run the code is a non-Admin account, then you need to set the privileges to that particular user account so it has the ability to start and stop Windows Services. This is how you do it.
    Login to an Administrator account on the computer which has the non-Admin account from which you want to Start/Stop the service. Open up the command prompt and give the following command:

    C:/>sc sdshow <SERVICE_NAME>
    

    Output of this will be something like this:

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
    

    It lists all the permissions each User / Group on this computer has with regards to .

    A description of one part of above command is as follows:
    
        D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)
    
    It has the default owner, default group, and it has the Security descriptor control flags (A;;CCLCSWRPWPDTLOCRRC;;;SY):
    
    ace_type - "A": ACCESS_ALLOWED_ACE_TYPE,
    ace_flags - n/a,
    rights - CCLCSWRPWPDTLOCRRC,  please refer to the Access Rights and Access Masks and Directory Services Access Rights
    CC: ADS_RIGHT_DS_CREATE_CHILD - Create a child DS object.
    LC: ADS_RIGHT_ACTRL_DS_LIST - Enumerate a DS object.
    SW: ADS_RIGHT_DS_SELF - Access allowed only after validated rights checks supported by the object are performed. This flag can be used alone to perform all validated rights checks of the object or it can be combined with an identifier of a specific validated right to perform only that check.
    RP: ADS_RIGHT_DS_READ_PROP - Read the properties of a DS object.
    WP: ADS_RIGHT_DS_WRITE_PROP - Write properties for a DS object.
    DT: ADS_RIGHT_DS_DELETE_TREE - Delete a tree of DS objects.
    LO: ADS_RIGHT_DS_LIST_OBJECT - List a tree of DS objects.
    CR: ADS_RIGHT_DS_CONTROL_ACCESS - Access allowed only after extended rights checks supported by the object are performed. This flag can be used alone to perform all extended rights checks on the object or it can be combined with an identifier of a specific extended right to perform only that check.
    RC: READ_CONTROL - The right to read the information in the object's security descriptor, not including the information in the system access control list (SACL). (This is a Standard Access Right, please read more http://msdn.microsoft.com/en-us/library/aa379607(VS.85).aspx)
    object_guid - n/a,
    inherit_object_guid - n/a,
    account_sid - "SY": Local system. The corresponding RID is SECURITY_LOCAL_SYSTEM_RID.
    

    Now what we need to do is to set the appropriate permissions to Start/Stop Windows Services to the groups or users we want. In this case we need the current non-Admin user be able to Start/Stop the service so we are going to set the permissions to that user. To do that, we need the SID of that particular Windows User Account. To obtain it, open up the Registry (Start > regedit) and locate the following registry key.

    LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
    

    Under that there is a seperate Key for each an every user account in this computer, and the key name is the SID of each account. SID are usually of the format S-1-5-21-2103278432-2794320136-1883075150-1000. Click on each Key, and you will see on the pane to the right a list of values for each Key. Locate «ProfileImagePath», and by it’s value you can find the User Name that SID belongs to. For instance, if the user name of the account is SACH, then the value of «ProfileImagePath» will be something like «C:UsersSach». So note down the SID of the user account you want to set the permissions to.

    Note2:
    Here a simple C# code sample which can be used to obtain a list of said Keys and it’s values.

    //LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList RegistryKey
    RegistryKey profileList = Registry.LocalMachine.OpenSubKey(keyName);
    
    //Get a list of SID corresponding to each account on the computer
    string[] sidList = profileList.GetSubKeyNames();
    
    foreach (string sid in sidList)
    {
        //Based on above names, get 'Registry Keys' corresponding to each SID
        RegistryKey profile = Registry.LocalMachine.OpenSubKey(Path.Combine(keyName, sid));
    
        //SID
        string strSID = sid;
        //UserName which is represented by above SID    
        string strUserName = (string)profile.GetValue("ProfileImagePath");
    }
    

    Now that we have the SID of the user account we want to set the permissions to, let’s get down to it. Let’s assume the SID of the user account is S-1-5-21-2103278432-2794320136-1883075150-1000.
    Copy the output of the [sc sdshow ] command to a text editor. It will look like this:

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
    

    Now, copy the (A;;CCLCSWRPWPDTLOCRRC;;;SY) part of the above text, and paste it just before the S:(AU;… part of the text. Then change that part to look like this:
    (A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)

    Then add sc sdset at the front, and enclose the above part with quotes. Your final command should look something like the following:

    sc sdset <SERVICE_NAME> "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2103278432-2794320136-1883075150-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
    

    Now execute this in your command prompt, and it should give the output as follows if successful:

    [SC] SetServiceObjectSecurity SUCCESS
    

    Now we’re good to go! Your non-Admin user account has been granted permissions to Start/Stop your service! Try loggin in to the user account and Start/Stop the service and it should let you do that.

    2. Access through IIS Method

    In this case, we need to grant the permission to the IIS user «Network Services» instead of the logon Windows user account. The procedure is the same, only the parameters of the command will be changed. Since we set the permission to «Network Services», replace SID with the string «NS» in the final sdset command we used previously. The final command should look something like this:

    sc sdset <SERVICE_NAME> "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;NS)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
    

    Execute it in the command prompt from an Admin user account, and voila! You have the permission to Start / Stop the service from any user account (irrespective of whether it ia an Admin account or not) using a WebMethod. Refer to Note1 to find out how to do so.

    Буквально сегодня понадобилось дать человеку возможность перезапускать тестовый вебсервер под виндой.
    Права админа давать естественно давать не хочется.
    «Мощный» юзер не подходит.

    букв много

    и тут на помощь приходит technet, который расcказывает про sc.

    В данном случае нас интересуют 2 команды:
    sc sdshow — показывает права
    sc sdset — устанавливает права

    Для начала узнаем, какие права у нашего сервиса уже есть:
    C:Usersadministrator>sc sdshow service_name

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
    RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

    Без изысков.

    Как видно, есть 2 интересных префикса:
    S: — System Access Control List (SACL) — это нас сейчас не интересует.
    D: — Discretionary ACL (DACL) — здесь указываются права для всех и всего.

    Смотрим далее.
    Первая буква после скобок означает разрешаем (A, Allow) или запрещаем (D, Deny).

    Мы разрешаем:
    (A;;;;;)

    И потом видим комбинации из двух букв:
    CC - SERVICE_QUERY_CONFIG
    LC - SERVICE_QUERY_STATUS
    SW - SERVICE_ENUMERATE_DEPENDENTS
    LO - SERVICE_INTERROGATE
    CR - SERVICE_USER_DEFINED_CONTROL
    RC - READ_CONTROL
    RP - SERVICE_START
    WP - SERVICE_STOP
    DT - SERVICE_PAUSE_CONTINUE

    По сути, нас будут интересовать последние три опции:
    (A;;RPWPDT;;;)

    Последние 2 буквы обозначают кому мы разрешаем или запрещаем:
    AU Authenticated Users
    AO Account operators
    RU Alias to allow previous Windows 2000
    AN Anonymous logon
    AU Authenticated users
    BA Built-in administrators
    BG Built-in guests
    BO Backup operators
    BU Built-in users
    CA Certificate server administrators
    CG Creator group
    CO Creator owner
    DA Domain administrators
    DC Domain computers
    DD Domain controllers
    DG Domain guests
    DU Domain users
    EA Enterprise administrators
    ED Enterprise domain controllers
    WD Everyone
    PA Group Policy administrators
    IU Interactively logged-on user
    LA Local administrator
    LG Local guest
    LS Local service account
    SY Local system
    NU Network logon user
    NO Network configuration operators
    NS Network service account
    PO Printer operators
    PS Personal self
    PU Power users
    RS RAS servers group
    RD Terminal server users
    RE Replicator
    RC Restricted code
    SA Schema administrators
    SO Server operators
    SU Service logon user

    + к этому списку можно явно указать пользователя по SID’у.

    Вот это самое интересное!
    как узнать SID пользователя?
    есть не один способ :)

    но, самый простой и удобный (на мой взгляд), написать маленький скриптик на vb:
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")

    Set objAccount = objWMIService.Get _
    ("Win32_UserAccount.Name='username',Domain='domain'")
    Wscript.Echo objAccount.SID

    Заменяем имя пользователя и домен по своему вкусу, сохраняем файл с расширением .vbs и запускаем.
    Появляется алерт с SID.

    Копируем в блокнот(или в любое другое место)
    Можно скрипт запустить в консоли, сэкономим время :)

    И так. Узнали SID.
    Вставляем в ключ:
    (A;;RPWPDT;;;S-1-5-21-3992622163-2725220152-438995547-4172)

    Теперь подготавливаем команду целиком:
    sc sdset D:(A;;RPWPDT;;;S-1-5-21-3992622163-2725220152-438995547-4172)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
    RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

    Наш ключ вставляем в любое место, но важно чтобы он был перед префиксом S.
    Важно не ошибиться, иначе можем потерять доступ к сервису :)
    Запускаем.

    проверяем:
    sc \server stop «service_name»

    Надеюсь, основную мысль донес.
    Так же жду критики, тк подозреваю что могут быть способы проще.

    UPD можно, кстате, использовать группы.
    для того чтобы узнать SID группы — вместо username, напишите имя группы.

    Несмотря на свой примитивный вид и скромные размеры, командная строка предоставляет множество вариаций на тему «А что если… произвести запуск службы из командной строки». Фактически, простому обывателю она понадобится в очень редких случаях, если совсем не понадобится, работа со службами (их запуск или остановка) и то реже (хотя тут скорее уместна команда net stop).

    Но, есть множество талантливой молодежи, или просто проницательных людей, которые с огромным удовольствие захотят засунуть свой нос в вашу систему. Конечно, большинство простых обывателей не будет извращаться над собой используя Windows NT или Windows 2000, да и Семерка все чаще наступает на горло «простенькому» ХР, но, командная_строка в мире операционных систем, это все ровно, что таблица умножения в мире финансов.

    В Панели управление/Администрирование находится оснастка Службы, которая позволяет управлять рядом сервисов. Двойной щелчок по любой из них позволяет просмотреть ряд параметров:

    Вкладка Общие показывает состояние, тип запуска, описание, исполняемый файл и другую информацию. Использование CMD позволяет получить аналогичную информацию, а также управлять состоянием и запуском служб, используя командную строку:

    Sc start Имя_Службы – производится запуск службы из командной строки

    Sc pause Имя_Службы – приостановка сервиса

    Sc continue Имя_Службы – восстановление работы приостановленного сервиса

    Sc stop Имя_Службы – полная остановка

    Эти команды можно применять и на удаленных машинах. Например, что бы запустить УдаленныйРеестр на машине с адресом 192.168.1.6., надо прописать (вместо IP можно и имя машины прописать, например Mailer):

    Sc 192.168.1.6 start RemoteRegistry

    Хотя, запустить службу из командной строки можно и при использовании утилиту net start, или net stop соответственно (net stop RemoteRegistry)

    Что бы настроить тип запуска применяется команда sc config (хотя ее возможности этим не ограничиваются). Синтаксис следующий:

    Sc config ИмяСлужбы start= флаг

    Флаг может принимать три значения:

    • Auto – автоматический запуск при старте системы
    • Demand – ручной запуск
    • Disable – отключение
    Sc 192.168.1.6 config RemoteRegistry start= disable

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

    На вкладке Вход в систему видно, что сервис можно запускать или от имени системной учетной записи, или от имени любой другой учетной записи. Так, что бы запустить службу из командной строки под тои или иной учетной записью, используется синтаксис:

    Sc config ИмяCлужбы obj= ИмяУчетнойЗаписи

    В данном примере УдаленныйРеестр грузится под ЛокальнойСлужбой (NT AUTHORITYLocalService), а можно и под системной учетной записью (LocalSystem), но лучше этого не делать:

    Sc config RemoteRegistry obj= LocalSystem

    Если использовать флаг type= interact, то это укажет, что сервис может взаимодействовать с рабочим столом Windows:

    Sc config RemoteRegistry obj= LocalSystem type= interact type= own

    тут флаг type= own говорит, что cлужбa выполняется в собственном процессе, если же работа происходит в общем процессе, то применятся флаг type= share. Например:

    Sc config ИмяCлужбы obj = LocalSystem type= interact type= share

    Используя команду sc qc ИмяСлужбы можно детально просмотреть информацию о ней, в том числе и тип запуска, например:

    TYPE : 20 WIN32_SHARE_PROCESS (общий процесс)
    или
    TYPE : 20 WIN32_OWN_PROCESS (собственный процесс)

    Может возникнуть необходимость сделать запуск определенной службы, используя командную строку, не от имени системы, а от имени пользователя, в таком случае надо указывать имя учетной записи и пароль, например:

    sс config w3svcobj = User password=UserPass — тут w3svc настроена на запуск от имени пользователя User с паролем UserPass. Общий же синтаксис такой:

    sс config ИмяCлужбы obj = [Домен]Пользователь password= пароль — тут Домен — имя домена, где находится учетная запись (не является обязательным). В случае, если системная cлужбa была прежде сконфигурирована под локальную систему, то при перенастройке под учетную запись домена надо использовать флаг type= own:

    Sc config ИмяСлужбы obj =[Домен]Пользователь password= пароль type= own

    Операционная система Windows содержит множество лазеек, которые позволяют в нее проникнуть (в том числе и сервер сценариев Windows Script Host), обходя стандартные правила. Не последнюю роль тут играют и системные службы. Например, утилита PsExec позволяет войти в удаленную систему или же запустить приложение от имени Локальной Системы. В процессе создается служба которая работает на обеих машина, она то и оперирует всем процессом связи. Однако, гордые обладатели Семерки, или даже ХР (если были установлены нужные обновления), могут сильно разочароваться. Хотя запуск службы psexecsvc можно произвести и непосредственно из командной строки, система ее просто игнорирует (или запрещает выполнять ее функции). Конечно, если есть голова, то можно создать аналог Psexec (тем более, что алгоритм работы известен), авось прокатит, но, если бы все было так, как в книге пишут…


    Windows 10, Windows 11, Windows 7, Windows 8, Windows Server, Windows Vista

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

    • 14.08.2022
    • 1 048
    • 1
    • 5
    • 4
    • 1

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

    • Содержание статьи
      • Описание проблемы
      • Запуск службы «Вторичный вход в систему»
        • Запуск службы через графический интерфейс
        • Запуск службы через командную строку
      • Комментарии к статье ( 1 шт )
      • Добавить комментарий

    Описание проблемы

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

    Указанная служба не может быть запущена, поскольку она отключена или все связанные с ней устройства отключены

    Запуск службы «Вторичный вход в систему»

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

    Запуск службы через графический интерфейс

    1. Для запуска службы через консоль управления, нужно сперва открыть данную консоль, набрав в меню Пуск слово «Службы», после чего найти запуск данной консоли в результатах поиска.
    2. После этого, в списке служб, следует найти службу «Вторичный вход в систему», и открыть её свойства двойным щелчком, или же, нажав правой кнопкой мыши на службе, и в появившемся меню выбрать пункт «Свойства».
    3. В свойствах следует поставить тип запуска «Автоматически» или «Вручную», и нажать «Применить».
    4. Затем, нужно нажать на кнопку «Запустить».

    Запуск службы через командную строку

    Для того, чтобы запустить службу «Вторичный вход в систему» через Командную строку, сперва нужно запустить командную строку с правами администратора, и затем выполнить там следующие команды:

    sc config seclogon start= auto
    sc start seclogon

    Первая команда установит тип запуска «Автоматически», а вторая — запустит службу «Вторичный вход в систему».

    Содержание

    • Как включить разрешение на запуск системных служб Windows 7?
    • Как дать пользователю права на запуск службы?
    • Как получить доступ к службам Windows 10?
    • Как создать свою службу в Windows?
    • Как дать пользователю права администратора Windows Server 2012?
    • Как добавить пользователя в Windows Server 2016?
    • Как открыть утилиту на Windows 10?
    • Как открыть список служб в Windows 10?
    • Как запустить службу из командной строки?
    • Как добавить службу в Windows 10?
    • Как запустить приложение в виде службы Windows?
    • Как изменить имя службы Windows?

    Как включить разрешение на запуск системных служб Windows 7?

    В дереве консоли разверните узел Системные службы. В правой области дважды щелкните имя службы, разрешения которой требуется изменить. Выберите Определить следующую политику в базе данных Установите флажок и нажмите кнопку Изменение параметров безопасности.

    Как дать пользователю права на запуск службы?

    Process Explorer: Установка разрешений на службу

    Откройте свойства процесса и перейдите на вкладку Services. Нажмите на кнопку Permissions и в открывшемся окне добавьте пользователя или группу, которой нужно предоставить права на сервис и выберите уровень полномочий (Full Control/Write/Read).

    Как получить доступ к службам Windows 10?

    Открыть службы Windows можно с помощью диалогового окна «Выполнить». Нажмите сочетание клавиш Win + R и введите или скопируйте и вставьте команду: services. msc в диалоговом окне «Выполнить» и нажмите Enter . Это откроет оснастку «Диспетчер служб».

    Как создать свою службу в Windows?

    Создание службы в Windows

    1. Для создания нового сервиса запускаем команду Sc create. …
    2. sc create [ServiceName] [binPath= ]
    3. ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. …
    4. Sc create MyService binPath=C:MyServiceMyService.exe DisplayName=″My New Service″ type=own start=auto.

    9 февр. 2017 г.

    Как дать пользователю права администратора Windows Server 2012?

    Щелкните правой кнопкой мыши по группе Administrators , выберите пункт Add to Group , а затем нажмите кнопку Add. В диалоговом окне «Select Users» в поле «Enter the object names to select» введите имя учетной записи пользователя или группы, которую вы хотите добавить в группу Administrators и нажмите OK.

    Как добавить пользователя в Windows Server 2016?

    Для создания пользователя в Windows откройте Панель управления сервером и выберете вкладку User Accounts.

    1. Далее снова перейдите во вкладку User Accounts.
    2. Далее выберете Manage other account.
    3. В нижней части экрана выберете Add a user account.
    4. a. …
    5. Нажмите Finish.
    6. В итоге вы увидите нового пользователя Windows Server 2016.

    Как открыть утилиту на Windows 10?

    Чтобы открыть утилиту, просто щелкните левой кнопкой мыши по меню Пуск и введите команду Службы. Кликните по найденному приложению и запустите его.

    Как открыть список служб в Windows 10?

    Откройте панель управления: в Windows 10 или 8 правой кнопкой мыши по Пуск — Панель управления. В Windows 7: левой кнопкой по Пуск — Панель управления. В открывшемся окне в правой верхней части найдите строку поиска и введите Службы. Среди результатов в разделе Администрирование кликните по Просмотр локальных служб.

    Как запустить службу из командной строки?

    Использование CMD позволяет получить аналогичную информацию, а также управлять состоянием и запуском служб, используя командную строку:

    1. Sc start Имя_Службы – производится запуск службы из командной строки
    2. Sc pause Имя_Службы – приостановка сервиса
    3. Sc continue Имя_Службы – восстановление работы приостановленного сервиса

    22 окт. 2013 г.

    Как добавить службу в Windows 10?

    Выполните следующие действия:

    1. Запустите командную строку (CMD) с правами администратора.
    2. Тип c:windowsmicrosoft.netframeworkv4.0.30319installutil.exe [your windows service path to exe]
    3. Нажмите return , и все!

    Как запустить приложение в виде службы Windows?

    Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом». А дальше начинаются чудеса 🙂 Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0).

    Как изменить имя службы Windows?

    Сделайте следующее:

    1. Остановите службу. …
    2. Открыть regedit.exe (редактор реестра).
    3. Найдите HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices и найдите подраздел с названием вашей службы.
    4. Щелкните правой кнопкой мыши ключ, который вы нашли на шаге 3, и выберите «Переименовать». …
    5. Перезагрузите компьютер.

    Интересные материалы:

    Как правильно ходить с пятки на носок или наоборот?
    Как правильно хранить белокочанную капусту в холодильнике?
    Как правильно хранить бритвенный станок?
    Как правильно хранить брюссельскую капусту?
    Как правильно хранить кожаную сумку?
    Как правильно хранить лук репчатый?
    Как правильно хранить лук в подвале?
    Как правильно хранить разделочные доски?
    Как правильно хранить сырую морковь?
    Как правильно хранить тестостерон?

    Понравилась статья? Поделить с друзьями:
  • Запуск службы от имени администратора windows 10
  • Запуск программы под другим пользователем windows 10
  • Запуск службы обновления windows 10 cmd
  • Запуск программы по rdp windows server 2012 r2
  • Запуск службы времени на windows 10