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

Недавно мне понадобилось писать скрипт, запускающий и перенастраивающий парочку служб. И возник вопрос — как называются службы в консоли. Знаю точно что Диспетчер очереди печати зовется просто spooler, а вот с остальными именами возник вопрос.

Первый и самый простой способ:

  1. Нажмите кнопку Пуск, а затем выберите пункт Программы.
  2. Нажмите кнопку Администрирование, а затем нажмите кнопку Службы.
  3. Щелкните правой кнопкой мыши службу из списка в правой части окна, а затем на Контекст меню, нажмите кнопку Свойства.
  4. На Общие Вкладка свойств выбранной службы, краткое имя службы предоставляется с помощью операции, после имени службы.

На скриншоте видно, что служба Центр обновления Windows зовется “wuauserv”.

service name 2 - Как узнать краткое имя службы для запуска её из консоли

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

  1. Запустите редактор реестра и выделите следующий раздел реестра:

    Мои Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

  2. С помощью функции Правка и поиск, поиск строки «Маршрутизации и удаленного доступа». Выберите Данные флажок и выберите Соответствие только строку целиком флажок в поле Параметры поиска. Значение DisplayName отображается со строкой «Маршрутизации и удаленного доступа». Имя ключа, в котором отображается это значение используется короткое имя службы.Например DisplayName «Маршрутизации и удаленного доступа» находится в раздел «маршрутизатор». Таким образом имя службы коротких является «Маршрутизатор».

service name 1 300x276 - Как узнать краткое имя службы для запуска её из консолиТаким несложным образом можно узнать имя службы и запускать её из консоли.

Стоит помнить что имя службы может отличаться от Windows NT 4.0 до Windows 2000. Например в Windows 2000, службой маршрутизации и удаленного доступа отображение называется «Маршрутизация и удаленный доступ» с коротким именем «Удаленного доступа». В Windows NT 4.0 отображаемое имя — это «Маршрутизации и удаленного доступа» с коротким именем «Маршрутизатор».

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

Существует несколько простых способов узнать имя службы Windows. Первый из них — использование командной строки. Для этого нужно открыть командную строку, ввести команду «sc query» и нажать Enter. В результате будет выведен список всех запущенных служб, в котором можно найти нужную.

Еще одним способом является использование диспетчера задач Windows. Для этого нужно нажать сочетание клавиш Ctrl+Shift+Esc, чтобы открыть диспетчер задач. Затем перейдите на вкладку «Службы» и найдите нужную службу в списке. Здесь вы найдете ее имя, статус и другую информацию.

Также можно воспользоваться утилитой «services.msc», которая предоставляет более подробную информацию о службах Windows. Для ее запуска нужно нажать Win+R, ввести «services.msc» и нажать Enter. В открывшемся окне вы найдете список всех служб, их имена, статус, тип и другие параметры.

Знание имени службы Windows может быть полезно во многих ситуациях, особенно при настройке или устранении неполадок в системе. Используя простые способы, описанные выше, вы сможете легко и быстро узнать имя нужной службы и продолжить работу с вашей системой без проблем.

Содержание

  1. С помощью командной строки
  2. Через диспетчер задач
  3. С использованием системной утилиты
  4. Поиск через реестр

С помощью командной строки

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

Прежде всего, откройте меню «Пуск» и в поисковой строке введите «cmd», а затем нажмите Enter. Вы также можете использовать сочетание клавиш Win + R, чтобы открыть окно «Выполнить», ввести «cmd» и нажать Enter.

После этого в командной строке введите команду:

sc query

Затем нажмите Enter. Эта команда выдаст информацию о всех службах, установленных на вашем компьютере.

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

sc query | find «имя_службы»

Замените «имя_службы» на конкретное название службы, которое вы хотите узнать. Например, если вы хотите узнать имя службы «Служба очистки диска», введите:

sc query | find «Служба очистки диска»

Нажмите Enter, и командная строка отобразит информацию о найденной службе, включая ее имя.

Теперь вы знаете, как узнать имя службы Windows с помощью командной строки. Этот метод может оказаться полезным, если вы предпочитаете работать в командной строке или если у вас нет доступа к интерфейсу управления службами Windows.

Через диспетчер задач

  1. Откройте диспетчер задач. Сделать это можно несколькими способами:
    • Нажмите комбинацию клавиш Ctrl+Shift+Esc, чтобы открыть диспетчер задач непосредственно.
    • Нажмите комбинацию клавиш Ctrl+Alt+Delete и выберите «Диспетчер задач» в меню.
    • Щелкните правой кнопкой мыши на панели задач и выберите «Диспетчер задач».
  2. Перейдите на вкладку «Службы».
  3. На вкладке «Службы» вы увидите список всех запущенных служб в системе. В столбце «Имя» будет указано имя каждой службы.

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

С использованием системной утилиты

  1. Откройте командную строку. Для этого нажмите клавиши Win + R, в появившемся окне введите «cmd» и нажмите Enter.
  2. Введите команду «sc query» и нажмите Enter. Вы получите полный список всех служб, запущенных на компьютере.
  3. Чтобы найти конкретную службу, введите команду «sc queryимя_службы» и нажмите Enter. Например, для поиска службы «Spooler» введите «sc query Spooler».
  4. В результате выполнения команды вы получите информацию о службе, включая ее имя — параметр «SERVICE_NAME».

Используя системную утилиту «sc», вы сможете быстро и просто узнать имя службы windows. Это может быть полезно, если вам необходимо внести изменения в работу службы или отладить проблему, связанную с ее функционированием.

Поиск через реестр

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

  1. Откройте Запуск, нажав комбинацию клавиш Win + R.
  2. Введите «regedit» и нажмите Enter.
  3. Откроется редактор реестра.
  4. Перейдите по следующему пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  5. В этом разделе находятся все службы Windows.
  6. Просмотрите список служб и найдите нужную вам службу.
  7. Узнайте имя службы, которое будет отображаться в столбце «имя службы».

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

Insight can be gained by looking at how Microsoft does this for the SQL Server service. In the Services control panel, we see:

Service name: MSSQLServer

Path to executable: «C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe» -sMSSQLSERVER

Notice that the name of the service is included as a command line argument. This is how it is made available to the service at run time. With some work, we can accomplish the same thing in .NET.

Basic steps:

  1. Have the installer take the service name as an installer parameter.
  2. Make API calls to set the command line for the service to include the service name.
  3. Modify the Main method to examine the command line and set the ServiceBase.ServiceName property. The Main method is typically in a file called Program.cs.

Install/uninstall commands

To install the service (can omit /Name to use DEFAULT_SERVICE_NAME):

installutil.exe /Name=YourServiceName YourService.exe

To uninstall the service (/Name is never required since it is stored in the stateSaver):

installutil.exe /u YourService.exe

Installer code sample:

using System;
using System.Collections;
using System.Configuration.Install;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.ServiceProcess;

namespace TestService
{
    [RunInstaller(true)]
    public class ProjectInstaller : Installer
    {
        private const string DEFAULT_SERVICE_NAME = "TestService";
        private const string DISPLAY_BASE_NAME = "Test Service";

        private ServiceProcessInstaller _ServiceProcessInstaller;
        private ServiceInstaller _ServiceInstaller;

        public ProjectInstaller()
        {
            _ServiceProcessInstaller = new ServiceProcessInstaller();
            _ServiceInstaller = new ServiceInstaller();

            _ServiceProcessInstaller.Account = ServiceAccount.LocalService;
            _ServiceProcessInstaller.Password = null;
            _ServiceProcessInstaller.Username = null;

            this.Installers.AddRange(new System.Configuration.Install.Installer[] {
                _ServiceProcessInstaller,
                _ServiceInstaller});
        }

        public override void Install(IDictionary stateSaver)
        {
            if (this.Context != null && this.Context.Parameters.ContainsKey("Name"))
                stateSaver["Name"] = this.Context.Parameters["Name"];
            else
                stateSaver["Name"] = DEFAULT_SERVICE_NAME;

            ConfigureInstaller(stateSaver);

            base.Install(stateSaver);

            IntPtr hScm = OpenSCManager(null, null, SC_MANAGER_ALL_ACCESS);
            if (hScm == IntPtr.Zero)
                throw new Win32Exception();
            try
            {
                IntPtr hSvc = OpenService(hScm, this._ServiceInstaller.ServiceName, SERVICE_ALL_ACCESS);
                if (hSvc == IntPtr.Zero)
                    throw new Win32Exception();
                try
                {
                    QUERY_SERVICE_CONFIG oldConfig;
                    uint bytesAllocated = 8192; // Per documentation, 8K is max size.
                    IntPtr ptr = Marshal.AllocHGlobal((int)bytesAllocated);
                    try
                    {
                        uint bytesNeeded;
                        if (!QueryServiceConfig(hSvc, ptr, bytesAllocated, out bytesNeeded))
                        {
                            throw new Win32Exception();
                        }
                        oldConfig = (QUERY_SERVICE_CONFIG)Marshal.PtrToStructure(ptr, typeof(QUERY_SERVICE_CONFIG));
                    }
                    finally
                    {
                        Marshal.FreeHGlobal(ptr);
                    }

                    string newBinaryPathAndParameters = oldConfig.lpBinaryPathName + " /s:" + (string)stateSaver["Name"];

                    if (!ChangeServiceConfig(hSvc, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE,
                    newBinaryPathAndParameters, null, IntPtr.Zero, null, null, null, null))
                        throw new Win32Exception();
                }
                finally
                {
                    if (!CloseServiceHandle(hSvc))
                        throw new Win32Exception();
                }
            }
            finally
            {
                if (!CloseServiceHandle(hScm))
                    throw new Win32Exception();
            }
        }

        public override void Rollback(IDictionary savedState)
        {
            ConfigureInstaller(savedState);
            base.Rollback(savedState);
        }

        public override void Uninstall(IDictionary savedState)
        {
            ConfigureInstaller(savedState);
            base.Uninstall(savedState);
        }

        private void ConfigureInstaller(IDictionary savedState)
        {
            _ServiceInstaller.ServiceName = (string)savedState["Name"];
            _ServiceInstaller.DisplayName = DISPLAY_BASE_NAME + " (" + _ServiceInstaller.ServiceName + ")";
        }

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr OpenSCManager(
            string lpMachineName,
            string lpDatabaseName,
            uint dwDesiredAccess);

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr OpenService(
            IntPtr hSCManager,
            string lpServiceName,
            uint dwDesiredAccess);

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        private struct QUERY_SERVICE_CONFIG
        {
            public uint dwServiceType;
            public uint dwStartType;
            public uint dwErrorControl;
            public string lpBinaryPathName;
            public string lpLoadOrderGroup;
            public uint dwTagId;
            public string lpDependencies;
            public string lpServiceStartName;
            public string lpDisplayName;
        }

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool QueryServiceConfig(
            IntPtr hService,
            IntPtr lpServiceConfig,
            uint cbBufSize,
            out uint pcbBytesNeeded);

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool ChangeServiceConfig(
            IntPtr hService,
            uint dwServiceType,
            uint dwStartType,
            uint dwErrorControl,
            string lpBinaryPathName,
            string lpLoadOrderGroup,
            IntPtr lpdwTagId,
            string lpDependencies,
            string lpServiceStartName,
            string lpPassword,
            string lpDisplayName);

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool CloseServiceHandle(
            IntPtr hSCObject);

        private const uint SERVICE_NO_CHANGE = 0xffffffffu;
        private const uint SC_MANAGER_ALL_ACCESS = 0xf003fu;
        private const uint SERVICE_ALL_ACCESS = 0xf01ffu;
    }
}

Main code sample:

using System;
using System.ServiceProcess;

namespace TestService
{
    class Program
    {
        static void Main(string[] args)
        {
            string serviceName = null;
            foreach (string s in args)
            {
                if (s.StartsWith("/s:", StringComparison.OrdinalIgnoreCase))
                {
                    serviceName = s.Substring("/s:".Length);
                }
            }

            if (serviceName == null)
                throw new InvalidOperationException("Service name not specified on command line.");

            // Substitute the name of your class that inherits from ServiceBase.

            TestServiceImplementation impl = new TestServiceImplementation();
            impl.ServiceName = serviceName;
            ServiceBase.Run(impl);
        }
    }

    class TestServiceImplementation : ServiceBase
    {
        protected override void OnStart(string[] args)
        {
            // Your service implementation here.
        }
    }
}

Как в командном файле получить список служб Windows? Как узнать, установлена ли определённая служба? Как проверить её состояние? Как её перезапустить?
Получить ответы на эти важные вопросы помогут команды SC и NET.

Для получения списка служб используется команда:

sc query type= service

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

Имя_службы: wuauserv
Выводимое_имя: Центр обновления Windows
        Тип                : 20  WIN32_SHARE_PROCESS  
        Состояние          : 4  RUNNING 
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN)
        Код_выхода_Win32   : 0  (0x0)
        Код_выхода_службы  : 0  (0x0)
        Контрольная_точка  : 0x0
        Ожидание           : 0x0

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

SERVICE_NAME: wuauserv
DISPLAY_NAME: Automatic Updates
        TYPE               : 20  WIN32_SHARE_PROCESS 
        STATE              : 4  RUNNING 
                                (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0	(0x0)
        SERVICE_EXIT_CODE  : 0	(0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Проверить наличие определённой службы можно поиском, например:
sc query type= service | findstr /i "wuauserv"
Если служба существует, вывод будет содержать строчку, а код возврата будет 0.
Если такой службы нет, вывод будет пустым, а код возврата 1.

Важно! В качестве строки поиска здесь используется внутреннее имя службы, которое не зависит от языковых настроек (DISPLAY_NAME зависит).

Для проверки конфигурации и статуса можно использовать команду SC QUERY , команда работает с внутренними именами, поэтому для проверки службы Планировщик задач можно написать SC QUERY schedule, и это будет работать везде. Проверить, запущена ли служба, можно по наличию строки RUNNING или STOPPED:

sc query schedule | find "RUNNING"

Команда NET START перечисляет все запущенные службы по одной на строчку, что делает работу с ней простой, например, проверить, что служба запущена, можно командой NET START | find «Планировщик заданий». Но необходимо учитывать, что эта команда работает с пользовательскими именами (Display Name) служб и приведённая команда не сработает в англоязычных региональных настройках.

Помимо обычного использования диспетчера задач Windows для завершения зависшей задачи или процесса, также очень полезно быстро проверить активные запущенные программы на вашем компьютере. Вы, возможно, заметили, что на вкладке процессов есть довольно много svchost.exe, и, возможно, вам интересно, что это такое и почему так много запущено? В основном SVCHOST используется Windows для запуска нескольких служб Windows, и причина, по которой службы Windows используют svchost.exe для запуска, заключается в том, что они находятся в файлах DLL, а не в независимом исполняемом (.EXE) файле. Если вы не знали, службы Windows – один из методов запуска в Windows, где он может автоматически запускаться в фоновом режиме, даже не требуя от пользователя входа в свою учетную запись в Windows, в отличие от другого метода запуска, когда программы запускаются только тогда, когда пользователь вошел в Windows.

svchost.exe в диспетчере задач

Обычно пользователи игнорируют существование файла svchost.exe, указанного в диспетчере задач Windows, и ищут только сомнительное имя образа. Вот где некоторые вредоносные программы используют преимущества, используя имя файла svchost.exe, надеясь, что вы не заметите его присутствие. Один из простых способов обнаружить подозрительный svchost.exe – посмотреть на имя пользователя, которое используется для запуска svchost.exe. Если svchost запускается с помощью SYSTEM, NETWORK SERVICE или LOCAL SERVICE, то он должен быть законным, но если он запускается под ВАШЕЙ учетной записью пользователя, вам необходимо выяснить, находится ли файл svchost.exe в другом месте, отличном от C: Windows System32 . Если вы хотите определить службы, которые запускаются за svchost.exe, вот 7 способов сделать это.
1. Диспетчер задач Windows

Начиная с Windows Vista, Microsoft упростила задачу, поскольку диспетчер задач может отображать имя службы, связанной с процессом svchost.exe. Чтобы запустить диспетчер задач Windows, щелкните правой кнопкой мыши панель задач и выберите «Запустить диспетчер задач». В качестве альтернативы вы также можете одновременно нажать Ctrl + Shift + Esc. Затем все, что вам нужно сделать, это щелкнуть правой кнопкой мыши по процессу svchost.exe и выбрать «Перейти в сервис (ы)”, Где вы автоматически перейдете на вкладку« Службы »и выделите название службы.

услуги svchost.exe

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

2. Командная строка

Другой способ выявить службу, связанную с svchost.exe, – использовать tasklist.exe из командной строки. В командной строке введите команду ниже, нажмите ввод, и имя службы будет отображаться справа от вывода списка задач.

список задач / svc / fi «IMAGENAME eq svchost.exe»

Список задач svchost.exe

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

3. Process Explorer

Process Explorer – дедушка всех диспетчеров задач. Пока что это наиболее полный инструмент для контроля и просмотра информации, связанной с svchost.exe. Просто дважды щелкните файл svchost.exe в Process Explorer и перейдите на вкладку «Службы».

Службы Process Explorer

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

Скачать Process Explorer

4. Процесс Хакер

Process Hacker – еще один популярный бесплатный и мощный менеджер задач с открытым исходным кодом, способный отображать и контролировать службы из процесса svchosts.exe. Как и Process Explorer, дважды щелкните по процессу svchost.exe и перейдите на вкладку Services. Список связанных служб отображается, и вы можете остановить или приостановить службу. Двойной щелчок по сервису откроет более расширенное окно свойств для настройки разрешений, типа запуска, контроля ошибок и многого другого.

Свойства служб Process Hacker

Доступны как установочные, так и переносные версии, включая 32-битные и 64-битные сборки.

Скачать Process Hacker

5. Svchost Process Analyzer

Svchost Process Analyzer

Svchost Process Analyzer – это бесплатная и переносимая программа, которая анализирует svchost.exe и показывает службы, связанные с этим процессом. Нажав на любой идентификатор в верхнем окне, вы увидите сервисы внизу вместе с файлом DLL и статусом. Описание сервиса автоматически обновится и отобразится в верхней панели программы. Этот инструмент может отображать только информацию, но не имеет параметров управления.

Скачать Svchost Process Analyzer

6. Svchost Viewer

Svchost Viewer

Svchost Viewer – это еще одна бесплатная утилита с открытым исходным кодом, размещенная на CodePlex, которая предоставляет вам основную информацию, такую ​​как имя и описание сервиса. Есть также два флажка, чтобы показать, может ли служба быть приостановлена ​​или остановлена. Если это можно остановить, нажмите на строку меню Service Control и выберите «Stop Selected Service». Интересная информация, отображаемая в Svchost Viewer, – это количество записанных и прочитанных данных.

Скачать Svchost Viewer

7. Услуги в Свчост

Службы In Svchost – это очень простая программа, которая просто показывает службы в файле svchosts.exe. Там нет ни описания, ни контроля, ни информации о файле DLL. Единственная уникальная функция, обнаруженная в этой утилите, – это возможность просматривать сервисы на удаленных компьютерах, вводя имя компьютера или IP-адрес.

Услуги в Свчост

Существуют требования, если вы хотите получить услуги на удаленном компьютере. Во-первых, требуется учетная запись пользователя с установленным паролем (пустой пароль не допускается), а служба удаленного реестра должна запускаться вручную. Убедитесь, что брандмауэр Windows не блокирует соединение. Как только все эти 3 требования будут выполнены, вам нужно будет вручную пройти аутентификацию на удаленном компьютере, открыв доступ к общим папкам. После аутентификации просто введите имя компьютера и нажмите кнопку «Получить службы».

Скачать сервисы в Свчост

  • Как узнать какая версия directx установлена на компьютере windows 10
  • Как узнать имя сетевого интерфейса windows
  • Как узнать какая у меня видеокарта на windows 10 если нет драйверов
  • Как узнать какая лицензия windows 10 установлена
  • Как узнать какая версия bluetooth на ноутбуке windows 10