
Перед тем как вы решите изменить DNS-сервер в Windows 10, рекомендуем очистить его кеш, чтобы избежать возможных неполадок с подключением:
- Запустите «Командную строку» с расширенными правами. Для этого введите соответствующий запрос в строке системного поиска и выберите пункт «Запуск от имени администратора».
- Вставьте команду
ipconfig /flushdnsи нажмите на клавишу «Enter».


На этом очистка кеша сервера DNS завершена. В окне терминала отобразится уведомление об успешном завершении процедуры.
Способ 1: Системные «Параметры»
В операционной системе Windows 10 изменить DNS-сервер можно через приложение «Параметры» и раздел с настройками сети:
- Запустите «Параметры» через главное меню, нажав по кнопке «Пуск» на нижней рабочей панели.
- В открывшемся окне перейдите в раздел «Сеть и Интернет».
- Слева выберите ту вкладку, название которой соответствует типу вашего интернет-соединения. Если это беспроводное подключение, то «Wi-Fi», а если проводное – «Ethernet». Кликните по названию соединения.
- Пролистайте до блока «Параметры IP» и нажмите на кнопку редактирования.
- В новом окошке разверните меню и выберите пункт «Вручную». С помощью тумблера активируйте соединение IPv4.
- В строках «Предпочтительный DNS-сервер» и «Дополнительный DNS-сервер» пропишите нужные значения. Сохраните настройки.






При необходимости можно изменить DNS-сервер и для IPv6, проделав то же самое при его выборе на Шаге 6.
Способ 2: Свойства сетевого подключения
В окне со свойствами текущего интернет-соединения тонко настраиваются его параметры. Чтобы изменить настройки протокола TCP, где прописывается сервер DNS, откройте раздел «Сетевые подключения» в классической «Панели управления»:
- Самый быстрый способ переход в окно с сетевыми подключениями – это диалоговое окно «Выполнить». Вызовите его одновременным нажатием на клавиши «Win + R».
- В строке введите команду
ncpa.cplи кликните по кнопке «ОК». - Откроется раздел с сетевыми подключениями. Найдите текущее соединение, щелкните по его названию правой кнопкой мыши и из контекстного меню выберите пункт «Свойства».
- На вкладке «Общие» в списке компонентов отыщите строку «IP версии 4 (TCP/IPv4)», выделите ее нажатием левой кнопкой мыши и щелкните по «Свойства».
- В новом окне отметьте пункт «Использовать следующие адреса DNS-серверов». В строках через точку пропишите нужные значения. Подтвердите внесение изменений кнопкой «ОК».






По такому же принципу нужно действовать, если требуется сменить адрес DNS в протоколе IPv6.
Способ 3: «Командная строка»
Множество операций в системе Windows 10 можно проделать через терминал «Командная строка», если знать определенные команды. Например, через консоль легко меняются DNS-серверы:
- Запустите «Командную строку» от имени администратора способом, описанном в самом начале статьи. Чтобы посмотреть список всех подключений, введите команду
netsh interface show interface. Нажмите на клавишу «Enter». - В столбце «Имя интерфейса» отыщите то подключение, DNS-сервер которого нужно изменить. В следующем шаге его название будет использоваться в команде.
- Для смены постоянного адреса на следующей строке консоли вставьте
netsh interface ip set dns name="Имя интерфейса" source="static" address="DNS-сервер". На нашем примере это будет выглядеть так:netsh interface ip set dns name="Ethernet 3" source="static" address="8.8.8.8". Нажмите на клавишу ввода, чтобы настройки немедленно вступили в силу. - Если нужно изменить альтернативный DNS-адрес, то введите команду
netsh interface ip add dns name="Имя интерфейса" address="DNS-сервер" index=2, заменив примеры в кавычках собственными данными (кавычки надо оставить). Подтвердите действие команды.




После смены адресов DNS-серверов можно очистить кеш протокола командой из начала статьи.
Способ 4: Сторонний софт
Для экономии времени пользователей разработаны специальные утилиты, с помощью которых можно изменить DNS-сервер несколькими кликами мышки. Алгоритм работы такого софта прост: возможности в интерфейсе взаимодействуют с системными параметрами, поэтому не нужно копаться в настройках или вводить специальные команды в консоли Windows.
Одна из самых простых и эффективных утилит – это DNS Jumper. Интерфейс простой и интуитивно понятный, а сама программа не требует установки. С помощью ее инструментов можно быстро переключаться между DNS-серверами.
- Запустите скачанный файл. В меню «Сетевой адаптер» выберите компонент, чтобы настроить параметры для него.
- В списке «DNS-сервер» можно выбрать один из популярных адресов, например от Google. Ниже отобразится постоянный и альтернативный адрес. Для смены значения нажмите на кнопку «Применить DNS», чтобы настройки вступили в силу.


Также через интерфейс утилиты можно вручную прописать значение адресов DNS, отметив пункт «Настроить DNS сервер».

В DNS Jumper доступна автоматическая и ручная настройка протокола TCP/IPv6.
Еще статьи по данной теме:
Помогла ли Вам статья?
- Настраиваем DNS в Linux
- Вопросы и ответы

Практически все дистрибутивы Linux функционируют по похожему принципу. Отличаются лишь некоторые консольные команды и оформление графической оболочки. В качестве примера мы рассмотрим Ubuntu, а вы, отталкиваясь от особенностей своей сборки, тоже сможете без проблем выполнить поставленную задачу. Если трудности возникнут на уровне использования определенных команд или при поиске пунктов меню графической среды, воспользуйтесь официальной документацией дистрибутива, чтобы узнать, какая альтернативная команда или опция отвечает за осуществление нужного действия.
Способ 1: Меню графической оболочки
Этот способ в первую очередь нацелен на начинающих пользователей, поскольку чаще всего в Linux их пугает необходимость выполнять каждое действие, вводя команды в консоль. Уже давно практически во всех окружениях присутствуют соответствующие пункты, позволяющие реализовывать различные конфигурации без единого обращения к «Терминалу». К DNS это тоже относится. Давайте посмотрим, как производится данное редактирование в стандартной графической оболочке Ubuntu.
- Обратите внимание на верхнюю панель, где присутствует кнопка сети и выключения компьютера. Нажмите по одной из них, чтобы просмотреть список подключений.
- Здесь вас интересует кнопка под названием «Параметры соединения».
- В открывшемся меню отыщите текущее соединение и нажмите по значку в виде шестеренки, чтобы перейти к конфигурации.
- Если вы хотите узнать свой адрес DNS, просто посмотрите на специально отведенную строку на вкладке «Сведения о системе». Для настройки получения DNS переместитесь на вкладку «IPv4» или «IPv6», воспользовавшись верхней панелью.
- В строке «Метод» вы можете указать оптимальный для вас способ получения DNS. По умолчанию используется автоматический тип через DHCP. Однако ничего не мешает вам просто отметить маркером один из остальных присутствующих пунктов.
- Вы можете самостоятельно прописать серверы DNS, к которым следует обращаться вашему маршрутизатору. Для этого в строке «DNS» через запятую укажите IP-адреса. На скриншоте ниже вы видите серверы от Google, и выглядят они так:
8.8.8.8и8.8.4.4. - По завершении конфигурации убедитесь в том, что все выставлено правильно, и только потом кликните на «Применить».
- Если возникла надобность создания нового типа подключения, то вы можете сразу же прописать настройки DNS точно таким же образом, как это было показано только что.
- По окончании конфигурации откройте главное меню и запустите «Терминал» для проверки.
- Введите
nslookup, а затем укажите необходимый адрес для проверки, например,google.com. - После нажатия на Enter подождите несколько секунд и ознакомьтесь с полученной информацией. Вы будете уведомлены о том, какой именно DNS-сервер использовался при пропинговке адреса.












Как видите, этот метод максимально прост и позволяет обойтись без редактирования конфигурационных файлов через консоль. Однако некоторые пользователи не имеют возможности задействовать графический интерфейс или же настройка постоянно сбивается. В таком случае придется обращаться к «Терминалу», чему и будет посвящен наш следующий метод.
Способ 2: Редактирование конфигурационных файлов
Использование «Терминала» для редактирования конфигурационных файлов при изменении системных параметров — самый эффективный способ, поскольку все действия здесь будут осуществляться от имени суперпользователя, а также не сбросятся при первом же перезапуске системы. Для конфигурации DNS используйте следующую инструкцию.
Конечно, использовать второй способ гораздо сложнее первого, однако это единственная альтернатива, которая оказывается эффективной в тех случаях, когда изменения DNS через графическую оболочку не приносят никаких результатов из-за постоянного сброса настроек. Вам достаточно просто следовать инструкциям, точно выполняя их для правильной конфигурации, и вы справитесь с редактированием параметров получения доменных имен.
Еще статьи по данной теме:
Помогла ли Вам статья?

Шаг 1: Инсталляция необходимых пакетов
Перед началом рассмотрения следующих инструкций хотим отметить, что на нашем сайте уже имеется общее руководство по конфигурации стандартного DNS в Linux. Мы рекомендуем задействовать именно тот материал, если следует выставить настройки для обычного посещения интернет-сайтов. Далее же мы покажем, как инсталлируется основной локальный DNS-сервер с клиентской частью.
В качестве средства создания локального DNS-сервера рекомендуем задействовать bind9. Настройка последующих конфигурационных файлов тоже будет базироваться на общих принципах поведения этого компонента. По умолчанию bind9 отсутствует в операционной системе, поэтому начнем с ее добавления.
- Запустите консоль удобным для вас способом. Она находится в разделе «Приложения» — «Избранное» или же открывается через стандартную комбинацию клавиш Ctrl + Alt + T.
- Здесь потребуется ввести команду
sudo yum install bind bind-utils -yи нажать на Enter для ее активации. - Данное действие выполняется от имени суперпользователя (sudo), поэтому придется подтвердить учетную запись, введя пароль в появившуюся строку.
- Ожидайте завершения скачивания и установки пакетов.




По окончании данного процесса вы будете уведомлены о том, что все пакеты успешно добавлены в систему. После этого переходите к следующему шагу.
Шаг 2: Глобальная настройка DNS-сервера
Сейчас хотим продемонстрировать, каким именно образом редактируется главный конфигурационный файл, а также какие строки туда добавляются. Не будем останавливаться на каждой строке отдельно, поскольку это займет очень много времени, к тому же все нужные сведения имеются в официальной документации.
- Для редактирования конфигурационных объектов можно использовать любой текстовый редактор. Предлагаем инсталлировать удобный nano, введя в консоли
sudo yum install nano. - Все необходимые пакеты будут загружены, а если они уже присутствуют в дистрибутиве, вы получите уведомление «Выполнять нечего».
- Приступим к редактированию самого файла. Откройте его через
sudo nano /etc/named.conf. При необходимости замените желаемый текстовый редактор, тогда строка получится примерно такой:sudo vi /etc/named.conf. - Ниже мы приведем содержимое, которое нужно вставить в открывшийся файл или сверить его с уже существующим, добавив недостающие строки.
- После этого нажмите на Ctrl + O, чтобы записать изменения.
- Менять название файла не нужно, достаточно просто нажать на Enter.
- Покиньте текстовый редактор через Ctrl + X.








Как уже было сказано ранее, в конфигурационный файл потребуется вставить определенные строки, задающие общие правила поведения DNS-сервера.
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Убедитесь, что все выставлено в точности так, как показано выше, а уже потом переходите к следующему шагу.
Шаг 3: Создание прямой и обратной зоны
- Для прямой зоны создадим отдельный файл через тот же текстовый редактор. Тогда строка будет выглядеть так:
sudo nano /var/named/forward.unixmen. - Вы будете уведомлены о том, что это пустой объект. Вставьте туда указанное ниже содержимое:
- Сохраните изменения и закройте текстовый редактор.
- Теперь перейдем к обратной зоне. Для нее требуется файл
/var/named/reverse.unixmen. - Это тоже будет новый пустой файл. Вставьте туда:
- При сохранении не изменяйте название объекта, а просто нажмите на клавишу Enter.






Теперь указанные файлы будут использованы для прямой и обратной зоны. При необходимости следует редактировать именно их, чтобы изменить какие-то параметры. Об этом вы тоже можете прочесть в официальной документации.
Шаг 4: Запуск DNS-сервера
После выполнения всех предыдущих указаний можно уже запустить DNS-сервер, чтобы в будущем легко проверить его работоспособность и продолжить настройку важных параметров. Осуществляется поставленная задача следующим образом:
- В консоли введите
sudo systemctl enable named, чтобы добавить DNS-сервер в автозагрузку для автоматического запуска при старте операционной системы. - Подтвердите это действие, введя пароль суперпользователя.
- Вы будете уведомлены о создании символической ссылки, а значит, действие выполнено успешно.
- Запустите утилиту через
systemctl start named. Остановить ее можно так же, только заменив опцию start наstop. - При отображении всплывающего окна с подтверждением подлинности введите пароль от root.





Как видно, управление указанной службой осуществляется по такому же принципу, как и всеми остальными стандартными утилитами, поэтому с этим не должно возникнуть никаких проблем даже у начинающих пользователей.
Шаг 5: Изменение параметров межсетевого экрана
Для корректного функционирования DNS-сервера потребуется открыть порт 53, что осуществляется через стандартный межсетевой экран FirewallD. В «Терминале» потребуется ввести всего три простых команды:
- Первая имеет вид
firewall-cmd --permanent --add-port=53/tcpи отвечает за открытие порта TCP-протокола. Вставьте ее в консоль и нажмите на Enter. - Вы должны получить уведомление «Success», что свидетельствует об успешном применении правила. После этого вставьте строку
firewall-cmd --permanent --add-port=53/udpдля открытия порта протокола UDP. - Все изменения будут применены только после перезагрузки межсетевого экрана, что производится через команду
firewall-cmd --reload.



Больше никаких изменений с брандмауэром производить не придется. Держите его постоянно во включенном состоянии, чтобы не возникло проблем с получением доступа.
Шаг 6: Настройка прав доступа
Сейчас потребуется выставить основные разрешения и права доступа, чтобы немного обезопасить функционирование DNS-сервера и оградить обычных пользователей от возможности изменять параметры. Сделаем это стандартным способом и через SELinux.
- Все последующие команды должны быть активированными от имени суперпользователя. Чтобы постоянно не вводить пароль, советуем включить перманентный рут-доступ для текущей терминальной сессии. Для этого в консоли введите
su. - Укажите пароль доступа.
- После этого поочередно впишите указанные ниже команды, чтобы создать оптимальную настройку доступа:
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf



На этом общая конфигурация главного DNS-сервера закончена. Осталось только отредактировать несколько конфигурационных файлов и произвести тестирование на ошибки. Со всем этим мы и предлагаем разобраться в следующем шаге.
Шаг 7: Тестирование на ошибки и завершение настройки
Рекомендуем начать с проверок на ошибки, чтобы в будущем не пришлось менять и оставшиеся конфигурационные файлы. Именно поэтому мы и рассмотрим все это в пределах одного шага, а также приведем образцы правильного вывода команд для тестирования.
- Введите в «Терминале»
named-checkconf /etc/named.conf. Это позволит проверить глобальные параметры. Если в результате никакого вывода не последовало, значит, все настроено корректно. В противном случае изучите сообщение и, отталкиваясь от него, решите проблему. - Далее требуется проверить прямую зону, вставив строку
named-checkzone unixmen.local /var/named/forward.unixmen. - Образец вывода выглядит следующим образом:
zone unixmen.local/IN: loaded serial 2011071001 OK. - Примерно то же самое осуществляем и с обратной зоной через
named-checkzone unixmen.local /var/named/reverse.unixmen. - Правильный вывод должен быть таким:
zone unixmen.local/IN: loaded serial 2011071001 OK. - Теперь перейдем к настройкам основного сетевого интерфейса. В него потребуется добавить данные текущего DNS-сервера. Для этого откройте файл
/etc/sysconfig/network-scripts/ifcfg-enp0s3. - Проверьте, чтобы содержимое было такое, как показано ниже. При необходимости вставьте параметры DNS.
- После сохранения изменений переходите к файлу
/etc/resolv.conf. - Здесь нужно добавить всего одну строку:
nameserver 192.168.1.101. - По завершении остается только перезагрузить сеть или компьютер, чтобы обновить конфигурацию. Служба сети перезапускается через команду
systemctl restart network.










Шаг 8: Проверка установленного DNS-сервера
В завершении конфигурации остается только проверить работу имеющегося DNS-сервера после его добавления в глобальную службу сети. Эта операция так же выполняется при помощи специальных команд. Первая из них имеет вид dig masterdns.unixmen.local.

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

; <> DiG 9.9.4-RedHat-9.9.4-14.el7 <> masterdns.unixmen.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25179
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;masterdns.unixmen.local. IN A
;; ANSWER SECTION:
masterdns.unixmen.local. 86400 IN A 192.168.1.101
;; AUTHORITY SECTION:
unixmen.local. 86400 IN NS secondarydns.unixmen.local.
unixmen.local. 86400 IN NS masterdns.unixmen.local.
;; ADDITIONAL SECTION:
secondarydns.unixmen.local. 86400 IN A 192.168.1.102
;; Query time: 0 msec
;; SERVER: 192.168.1.101#53(192.168.1.101)
;; WHEN: Wed Aug 20 16:20:46 IST 2014
;; MSG SIZE rcvd: 125
Дополнительная команда позволит узнать о состоянии локальной работы DNS-сервера. Для этого в консоль вставьте nslookup unixmen.local и нажмите на Enter.

В результате должно отобразиться три разных представления адресов IP и доменных имен.
Server: 192.168.1.101
Address: 192.168.1.101#53
Name: unixmen.local
Address: 192.168.1.103
Name: unixmen.local
Address: 192.168.1.101
Name: unixmen.local
Address: 192.168.1.102

Если вывод соответствует тому, который указали мы, значит, конфигурация завершена успешно и можно переходить к работе с клиентской частью DNS-сервера.
Мы не будем разделять эту процедуру на отдельные шаги, поскольку она выполняется путем редактирования всего одного конфигурационного файла. В него необходимо добавить информацию обо всех клиентах, которые будут подключены к серверу, а пример такой настройки выглядит так:
- Откройте файл
/etc/resolv.confчерез любой удобный текстовый редактор. - Добавьте туда строки
search unixmen.local nameserver 192.168.1.101иnameserver 192.168.1.102, заменив необходимое на клиентские адреса. - При сохранении не изменяйте имя файла, а просто нажмите на клавишу Enter.
- После выхода из текстового редактора в обязательном порядке перезагрузите глобальную сеть через команду
systemctl restart network.




Это были основные моменты настройки клиентской составляющей DNS-сервера, о которой мы хотели рассказать. Все остальные нюансы предлагаем изучить, прочитав официальную документацию, если это требуется.
Тестирование DNS-сервера
Последний этап нашего сегодняшнего материала — завершающее тестирование DNS-сервера. Ниже вы видите несколько команд, позволяющий справиться с поставленной задачей. Используйте одну из них, активировав через «Терминал». Если в выводе не наблюдается никаких ошибок, следовательно, весь процесс выполнен верно.
dig masterdns.unixmen.local
dig secondarydns.unixmen.local
dig client.unixmen.local
nslookup unixmen.local

Сегодня вы узнали все о настройке главного DNS-сервера в дистрибутиве CentOS. Как видите, вся операция сосредоточена на вводе терминальных команд и редактировании конфигурационных файлов, что может вызвать определенные трудности у начинающих пользователей. Однако вам требуется всего лишь точно следовать указанным инструкциям и читать результаты проверок, чтобы все прошло без каких-либо ошибок.
Любой системный администратор сталкивается с настройкой сетевых интерфейсов. Большинство для этой цели используют графический интерфейс Windows, что не всегда удобно. В этой статье я расскажу, как настроить сеть с помошью интерфейса командной строки cmd, используя встроенную утилиту netsh.
В операционных системах Windows есть специальная утилита netsh для настройки сетевого адаптера из командной строки cmd.
netsh.exe (network shell) — сетевая оболочка (программа) для ОС Windows, которая позволяет настраивать сетевые параметры, в том числе и удаленно. Данная утилита доступна на всех версиях Windows, начиная с Windows 2000.
Запуск командной строки:
Пуск –> Выполнить –> в строку вводим cmd.exe
Откроется черное окно с мигающим курсором. Тут мы и будем вводить перечисленные ниже команды (ну это для тех, кто никогда не работал с командной строкой).
Конфигурирование сетевых параметров (ip-адреса, сетевой маски и шлюза)
netsh interface ip set address name="Local Area Connection" static 192.168.1.15 255.255.255.0 192.168.1.1
где
Local Area Connection – название вашего сетевого интерфейса.
192.168.1.15 – сетевой адрес (ip address).
255.255.255.0 – сетевая маска (network mask).
192.168.1.1 – шлюз (default gateway).
netsh interface ip add address name="Local Area Connection" 192.168.1.20 255.255.255.0
netsh interface ip set address "Local Area Connection" dhcp
Конфигурирование DNS и WINS серверов
Добавить предпочитаемый DNS сервер.
netsh interface ip set dns "Local Area Connection" static 8.8.8.8
Добавить альтернативный DNS сервер.
netsh interface ip add dns "Local Area Connection" 8.8.4.4
Добавить 3-й DNS сервер.
netsh interface ip add dns "Local Area Connection" 192.168.1.30 index=3
Установка автоматического получения предпочитаемого и альтернативного dns-сервера от DHCP-сервера.
netsh interface ip set dns "Local Area Connection" dhcp
netsh interface ip set wins "Local Area Connection" static 192.168.1.240
Включение и отключение сетевых интерфейсов
netsh interface set interface name="Local Area Connection" admin=DISABLED
netsh interface set interface name="Local Area Connection" admin=ENABLED
Просмотр сетевых настроек
Расширеный вывод конфигурации сетевых интерфейсов.
netsh interface ip show config
Просмотр состояния интерфейсов (connected/disconnected).
C:\Windows\System32>netsh interface ip show interface Инд Мет MTU Состояние Имя --- ---------- ---------- ------------ --------------------------- 1 50 4294967295 connected Loopback Pseudo-Interface 1 12 10 1300 disconnected Local Area Connection
Просмотр таблицы маршрутизации.
netsh interface ip show route
netsh interface ip show addresses
Просмотр адресов DNS-сервера.
netsh interface ip show dnsservers
Просмотр адресов WINS-сервера.
netsh interface ip show winsservers
Сохранение и восстановление конфигурации сетевых интерфейсов
Ну а теперь самое интересное. Поговорим о том, как сохранить сетевые настройки в виде файла конфигурации и восстановить из файла конфигурации. Это может пригодиться тем, кто постоянно меняет сетевые настройки.
Сохранить сетевые настройки в виде файла.
C:\Windows\System32>netsh -c interface dump > C:\my-config.txt
Восстановить сетевые настройки из файла конфигурации.
C:\Windows\System32>netsh -f C:\my-config.txt
Вот и все. Мы рассмотрели далеко не все возможности утилиты Netsh.exe, а лишь самые часто используемые. Используя коммандную строку Windows и утилиту netsh можно намного облегчить себе жизнь.
Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.
Создание службы с помощью программы Sc.exe
Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими.
Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах.
Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:
- ServiceName — данным параметром определяется имя раздела службы в реестре;
Данное имя не совпадает с тем именем, которое будет отображаться диспетчере (например, в Services). - BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:
Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto
Теперь откройте оснастку «Services» и взгляните на то, что получилось:

Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:
Sc config MyService DisplayName=″My Service″
А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:
Sc delete MyService

С помощью утилиты PowerShell
Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:
New-Service -Name MyService -BinaryPathName C:\MyService\MyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service !!!″
Для изменения параметров служб, существует команда «Set -Service»:
Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual

Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:
(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()
Так что утилита sc.exe, в этом плане будет получше. И по этой причине я предпочитаю именно ее.
Автор статьи: Сергей
Это может пригодиться:
SC
SC
SC
Формат командной строки:
При запуске SC.EXE без параметров, отображается подсказка по использованию команды.
query -Запрос состояния службы или перечисление состояний типов служб.
queryex – Запрос расширенного состояния службы или перечисление состояний типов служб.
start – Запуск службы.
pause – Отправка службе управляющего запроса PAUSE для приостановки ее работы.
interrogate – Отправка службе управляющего запроса INTERROGATE.
continue – Отправка службе управляющего запроса CONTINUE для возобновления ее работы.
stop – Отправка службе запроса STOP.
config – Изменение конфигурации службы (постоянное).
description – Изменение описания службы.
failure – Изменение действия, выполняемого службой при сбое.
failureflag – Изменение флага действия, выполняемого службой при сбое.
sidtype – Изменение типа SID службы.
privs– Изменение привилегий, требуемых для службы.
qc – Запрос данных конфигурации для службы.
qdescription – Запрос описания службы.
qfailure – Запрос действия, выполняемого службой при сбое.
qfailureflag – Запрос флага действия, выполняемого службой при сбое.
qsidtype – Запрос типа SID службы.
qprivs – Запрос привилегий, требуемых для службы.
qtriggerinfo – Запрос параметров службы.
qpreferrednode – Запрос предпочтительного узла NUMA службы.
delete – Удаление службы (из реестра).
create – Создание службы (добавление ее в реестр).
control – Отправка службе управляющего сигнала.
sdshow – Отображение дескриптора безопасности службы.
sdset – Установка дескриптора безопасности службы.
showsid – Отображение строки SID службы, соответствующей произвольному имени.
triggerinfo – Настройка параметров триггеров службы.
preferrednode – Задание предпочтительного узла NUMA службы.
GetDisplayName – Получение параметра DisplayName для службы.
GetKeyName – Получение имени раздела для службы (ServiceKeyName).
EnumDepend – Перечисление зависимостей службы.
Следующие команды не требуют имени службы:
Lock -Блокировка базы данных служб
QueryLock -Запрос состояния блокировки (LockStatus) базы данных диспетчера управления службами (SCManager)
Справка для команд QUERY и QUERYEX:
Параметры QUERY и QUERYEX:
Если после команды query указано имя службы, будет возвращено cостояние этой службы. В этом случае дополнительные параметры не используются.
Если после команды запроса указаны следующие параметры либо ничего не указано, выполняется перечисление служб.
type= – Тип служб для перечисления (driver, service, all) (по умолчанию = service)
state= – Состояние служб для перечисления (inactive, all) (по умолчанию = active)
bufsize= – Размер (в байтах) буфера перечисления (по умолчанию = 4096)
ri= – Номер индекса возобновления для начала перечисления (по умолчанию = 0)
group= – Группа служб для перечисления (по умолчанию = все группы)
Примеры использования SC.
sc query – Перечислить состояния активных служб и драйверов
sc query dnscache – Отобразить состояние службы DNS-клиент, имеющей короткое имя dnscache
Пример отображаемой информации:
sc \\mycomp queryex dnscache – отображение расширенного состояния службы DNS-клиент на компьютере с именем mycomp
Пример отображаемой информации:
sc stop dnscache – остановить службу DNS-клиент на локальном компьютере
sc start dnscache – запустить службу DNS-клиент на локальном компьютере
sc query type= driver – отобразить информацию всех активных драйверов
sc query type= service – отобразить информацию всех активных служб Windows
sc query state= all – отобразить информацию всех активных драйверов и служб Windows
sc query type= driver group= NDIS – отобразить информацию обо всех драйверах группы NDIS ( сетевых драйверах )
Пример отображаемой информации:
Имя_службы: BfLwf
Выводимое_имя: Qualcomm Atheros Bandwidth Control
.
.
.
Имя_службы: wna3100m
Выводимое_имя: NETGEAR WNA3100M N300 Wireless Mini USB Adapter
sc query wna3100m
sc query type= interact – отобразить информацию обо всех интерактивных службах.
sc query state= inactive – отобразить информацию обо всех остановленных службах
sc query state= inactive > C:\Stopedsvc.txt – записать информацию обо всех остановленных службах в текстовый файл C:\Stopedsvc.txt . Перенаправление вывода в текстовый файл удобно использовать для сохранения информации и ее последующего использования.
sc qc dnscache – отобразить данные конфигурации для службы DNS-клиент.
Пример выводимой информации:
sc showsid dnscache – отобразить уникальный идентификатор SID службы DNS-клиент
Параметры командной строки:
Имя параметра включает знак равенства (=). Между знаком равенства и значением параметра должен быть пробел.
Информация о драйверах и системных службах (сервисах) находится в разделе
Весь список команд CMD Windows
Службами в Windows называются процессы, стартующие вместе с системой, не имеющие графического интерфейса и работающие в фоновом режиме, причем большинство служб запускается и работают независимо от того, вошел ли пользователь в свою учетную запись или нет. Эту особенность операционной системы можно использовать в практических целях, например, создать собственную службу, которая станет отслеживать изменения в реестре или отправку пакетов .
В статье от 07 декабря 2020 года мы уже рассматривали процедуру создания служб в Windows 10, предлагая использовать для этой цели стороннюю утилиту Non-Sucking Service Manager, укомплектованную простейшим графическим интерфейсом.
Сегодня мы предлагаем познакомиться со способами создания служб исключительно средствами операционной системы. Используйте их, если в качестве службы вам нужно установить процесс исполняемого файла , так как для назначения службами процессов скриптов всё же удобнее использовать Non-Sucking Service Manager.
Командная строка
Для создания служб в Windows можно использовать встроенную консольную утилиту sc.exe, предназначением которой как раз является добавление, удаление, опрос и конфигурирование системных служб.
Запустите командную строку от имени администратора и выполните в ней команду следующего вида:
sc create MyService binPath=”C:\service.exe” DisplayName= “ServiceName” type=own start=auto

Как нетрудно догадаться, C:\service.exe – это путь к исполняемому файлу службы, ServiceName – отображаемое имя , а MyService – фактическое имя службы, к которому нужно будет обращаться в процессе настройки службы. Параметр type задает статус, в параметр start – тип запуска.

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

Если служба станет больше не нужна, вы всегда сможете ее удалить командой:
sc delete MyService

PowerShell
Средствами создания и управления службами обладает также и консоль .
Запустите ее от имени администратора и выполните следующую команду:
New-Service -Name MyService -BinaryPathName C:\service.exe -DisplayName “ServiceName” -Description ” Service Description”

Ключевыми параметрами являются -Name и -BinaryPathName: первый принимает произвольное имя устанавливаемой службы, а второй – путь к исполняемому файлу службы.

Параметры -DisplayName и -Description являются дополнительными, они задают отображаемое имя и описание службы.

А вот с удалением службы в PowerShell не всё так однозначно.
Если у вас установлена консоль шестой или более новой версии, службу можно будет удалить командой:
Remove-Service -Name MyService
В противном случае придется использовать вот такую хитрую конструкцию, где MyService – имя службы:
(Get-WmiObject win32_service -Filter “name=’MyService'”).delete()

Для тех, кто не в курсе: узнать текущую версию можно командой , билд будет указан в строке Version.

И возвращаясь к службам отметим, что между службами, созданными в командной строке и PowerShell, нет никакой разницы, поэтому для их удаления в том и другом случае вы можете использовать команду sc delete MyService.
Открыв Диспетчер задач и переключившись на вкладку «Подробности», можно обнаружить ряд процессов, которые явно не имеют никакого отношения к запущенным пользователем прикладным программам. Многие из таких процессов принадлежат службам — особым программным модулям, стартующим вместе с Windows, работающим в скрытом режиме и выполняющим подчас очень важную работу. Но тут у многих может возникнуть вопрос.
А разве прикладные программы не могут работать в скрытом режиме и точно так же запускаться вместе с Windows, будучи добавленными в автозагрузку?
Чем службы отличаются от программ, добавленных в автозагрузку
Теперь, когда вы поняли основную разницу между добавленными в автозагрузку приложениями и службами, мы научимся создавать такие службы сами и использовать их для разных целей, например, для мониторинга портов или еще чего-нибудь; главное — это найти программу или скрипт, который будет выполнять необходимое вам действие.

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

Сначала проверим, работает ли сам скрипт. Кликаем по нему ПКМ и выбираем «Выполнить с помощью PowerShell».

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


В результате в каталоге со скриптом у вас появится каталог с файлом отчета в простом текстовом формате.

Создаем службу
Теперь переходим к работе с Non-Sucking Service Manager. Открыв от имени администратора командную строку и перейдя в расположение исполняемого файла утилиты соответствующей разрядности, выполняем команду nssm install logCPUAvg, где logCPUAvg — имя новой службы.
В открывшемся окошке установщика вы увидите три поля:
- Path – в нем указываем путь к обработчику, то есть PowerShell, файл консоли находится в папке .
- Startup directory – папка с исполняемым файлом обработчика, поле заполнится автоматически.
- Arguments – в этом поле прописываем команду -ExecutionPolicy Bypass -NoProfile -File “полный-путь-к-скрипту”.
Аргумент ExecutionPolicy нужен для предоставления скрипту временных прав на запуск. Если в качестве службы вы устанавливаете какую-нибудь утилиту, то поле может быть оставлено как пустым, так и с указанным в нём аргументом данной конкретной утилиты.
Всё готово, жмем «Install service», чтобы установить службу.


Окно установщика содержит и другие вкладки, дополнительные. Например, на вкладке «Details» можно указать описание и отображаемое в оснастке управления службами имя службы, которое будет отличаться от указанного в команде nssm install, а на вкладке «Log on» выбрать учетную запись, от имени которой станет работать служба.
По умолчанию создаваемая служба работает от имени самой системы, как и положено. Открыв оснастку управления службами, вы увидите в списке и свою службу. Она будет иметь тип запуска «Автоматически», но находиться в остановленном состоянии. Запустится она при следующей загрузке, либо вы сами можете ее запустить.

То, что скрипт заработал, станет видно из того, что в месте его расположения появится папка , при этом вывод самой консоли будет скрыт. И вот что интересно. Запустив службу, мы вышли из учетной записи в 12.46, а затем вошли в нее в 12.50, но служба продолжала работать даже в наше отсутствие в системе! Это еще раз говорит о том, что системная служба не связана с пользовательским окружением.

Удаление службы
Помимо того, что вы можете остановить службу в оснастке, переведя ее в статус «Отключена», вы властны ее полностью удалить с помощью той же NSSM. Для этого в командной строке выполняем команду nssm remove имя-службы.

И подтверждаем действие нажатием кнопки «Да» в миниатюрном диалоговом окошке.

Ну вот, теперь вы знаете, как создавать собственные службы для утилит и скриптов, которые могут работать независимо от пользователя в скрытом режиме.
откройте Visual studio и выберите новый проект, выбрав
Windows ServiceшаблонWindows Desktoptab. Чем скопировать следующий код в имя_службы.cs-файл.using System.Diagnostics; using System.ServiceProcess; namespace TimerService { public partial class Timer_Service : ServiceBase { public Timer_Service() { InitializeComponent(); } static void Main() { if (System.Diagnostics.Debugger.IsAttached) { Timer_Service service = new Timer_Service(); service.OnStart(null); } else { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Timer_Service() }; ServiceBase.Run(ServicesToRun); } } protected override void OnStart(string[] args) { EventLog.WriteEvent("Timer_Service", new EventInstance(0, 0, EventLogEntryType.Information), new string[] { "Service start successfully." }); } protected override void OnStop() { EventLog.WriteEvent("Timer_Service", new EventInstance(0, 0, EventLogEntryType.Information), new string[] { "Service stop successfully." }); } } }удалить
static void mainметод .
Чем сохранить и построить свой проект.теперь вы должны открыть CommandPromt как администратор.
После открытия, установите каталог, где вашInstallUtil.exeфайл помещается.
например:C:\Windows\Microsoft.NET\Framework64\v4.0.30319.
теперь напишите следующую команду:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe -i C:\TimerService\TimerService\bin\Debug\TimerService.exeПримечание: -я для установки он обслуживает и-u для Unsinstall.
после-я установил запись пути, по которому вы хотите установить свой сервис.
теперь напишите команду в CommandPromt следующим образом:
C:\TimerService\TimerService\bin\Debug>net start service_nameПримечание: использовать
stopдля остановки службы.теперь откройте
ViewEventLog.exe. Выберите Журналы Windows>Приложение. Там вы можете проверить журнал своей службы, запустив и остановив службу.
Как запустить приложение в виде службы Windows
Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.
NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.
Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.
Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду
которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.
Также на этапе создания новой службы можно указать некоторые дополнительные параметры.
На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.
Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:
• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.
Возможно отключить некоторые или даже все методы, однако для разных приложений срабатывают разные методы и для корректного завершения работы приложения рекомендуется оставить все как есть.
По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.
На вкладке «Input/Output (I/O)» можно задать перенаправление ввода\вывода приложения в указанный файл.
На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.
Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:
nssm install notepad "C:\Windows\system32\notepad.exe"После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.
Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду
nssm remove notepad confirmможно обойтись и без подтверждения.




