Как я могу написать сценарий bat или cmd, чтобы остановить и запустить службу надежно с проверкой ошибок (или дайте мне знать, что это не было успешным по какой-либо причине)?
14 ответов
использовать SC (service control) команда, это дает вам гораздо больше возможностей, чем просто start & stop.
скажите вам, преуспели ли они или потерпели неудачу довольно ясно. Например
при запуске из пакетного файла, у вас есть доступ к ERRORLEVEL кода возврата. 0 указывает на успех. Все, что выше указывает на ошибку.
как bat-файл, error.bat:
вывод выглядит так:
– 0 = Success
– 1 = Not Supported
– 2 = Access Denied
– 3 = Dependent Services Running
– 4 = Invalid Service Control
– 5 = Service Cannot Accept Control
– 6 = Service Not Active
– 7 = Service Request Timeout
– 8 = Unknown Failure
– 9 = Path Not Found
– 10 = Service Already Running
– 11 = Service Database Locked
– 12 = Service Dependency Deleted
– 13 = Service Dependency Failure
– 14 = Service Disabled
– 15 = Service Logon Failure
– 16 = Service Marked For Deletion
– 17 = Service No Thread
– 18 = Status Circular Dependency
– 19 = Status Duplicate Name
– 20 = Status Invalid Name
– 21 = Status Invalid Parameter
– 22 = Status Invalid Service Account
– 23 = Status Service Exists
– 24 = Service Already Paused
команда NET не возвращает документированные коды возврата класса Win32_Service (Service not Active,Service Request Timeout и т. д.) и для многих ошибок просто возвращает Errorlevel 2.
вы можете использовать команду NET START, а затем проверить переменную среды ERRORLEVEL, например
отказ от ответственности: я написал это с самого начала, но я думаю, что это сработает.
вместо проверки кодов, это тоже работает
Я создал свой личный пакетный файл для этого, мой немного отличается, но не стесняйтесь изменять, как вы считаете нужным.
The %var% это просто способ для пользователя, чтобы иметь возможность ввести свой собственный сервис в этом, вместо того, чтобы идти изменить файл bat каждый раз, когда вы хотите, чтобы запустить/остановить другую службу.
Если я ошибаюсь, любой может чувствовать себя свободно, чтобы исправить меня на этом.
используя коды возврата от net start и net stop Мне кажется, что это лучший метод. Попробуйте взглянуть на это:чистый старт коды возврата.
здесь явно показано, как добавить строку в пакетный файл, который убьет удаленную службу (на другой машине) если вы являетесь администратором на обеих машинах, запустите .bat как администратор, и машины находятся в одном домене. Имя машины следует за форматом UNC myserver
sc ip.ip.ip.ip stop p4_1
sc ip.ip.ip.ip stop p4_1 4 Stopping server for maintenance
мы хотели бы думать, что “чистая остановка” остановит службу. К сожалению, реальность не такая уж черно-белая. Если службе требуется много времени для остановки, команда вернется до остановки службы. Вы не знаете, если вы отметите ошибки.
решение, похоже, заключается в циклическом поиске состояния службы до тех пор, пока оно не будет остановлено, с паузой каждый раз вокруг цикла.
Я вижу впервые служба занимает много времени, чтобы остановиться, а затем “чистая остановка” для последующей службы просто ничего не делает. Посмотрите на службу в диспетчере служб, и ее состояние по – прежнему “запущено” – без изменения на “остановку”. Тем не менее, я могу остановить эту вторую службу вручную с помощью SCM, и она останавливается через 3 или 4 секунды.
Я просто использовал пример Джонаса выше и создал полный список от 0 до 24 уровней ошибок. Другой пост правильно, что net start и net stop использовать только errorlevel 0 для успеха и 2 отказа.
но это то, что сработало для меня:
изменить stop до start и работает в обратном направлении.
ручной перезапуск службы-это ok-services.msc имеет кнопку” Перезагрузка”, но в командной строке как sc, так и net командам не хватает переключателя” перезагрузка”, и если перезапуск запланирован в файле cmd/bat, служба останавливается и запускается немедленно, иногда она получает ошибку, потому что Служба еще не остановлена, ей нужно некоторое время, чтобы закрыть вещи.
Это может привести к ошибке:
СК остановка
sc start
Это хорошая идея, чтобы вставить тайм-аут, я использую пинг (он проверяет каждую 1 секунду):
Южная Каролина остановка
ping localhost-N 60
sc start
иногда вы можете найти стоп-не работает..
мой SQlServer иногда делает это. С помощью следующей командной строки убивает его. Если вам действительно нужен ваш сценарий, чтобы убить вещи, которые не останавливаются. Я бы сделал это в крайнем случае
Я пишу службу windows на C#, цикл stop/uninstall/build/install/start стал слишком утомительным. Написал мини-скрипт, назвал его reploy.bat и упал в мой выходной каталог Visual Studio (тот, который имеет встроенный исполняемый файл службы) для автоматизации цикла.
просто установите эти 3 Варс
servicename: это отображается на панели управления Windows Service (services.msc)
slndir : папка (не полный путь), содержащая ваше решение (.ФСЛ) файл
binpath: полный путь (не путь к папке) к исполняемому файлу службы из сборки
Примечание: это должно быть запущено из командной строки разработчика Visual Studio для msbuild команда для работы.
SET servicename=”My Amazing Service”
SET slndir=”C:dir hatcontainsslnile”
SET binpath=”C:path oservice.exe”
SET currdir=%cd%
call net stop %servicename%
call sc delete %servicename%
cd %slndir%
call msbuild
cd %bindir%
call sc create %servicename% binpath=%binpath%
call net start %servicename%
cd %currdir%
может быть, это поможет кому-то 🙂
Служба времени Windows, несмотря на кажущуюся простоту, является одной из основ, необходимых для нормального функционирования домена Active Directory. В правильно настроенной среде AD служба времени работает следующим образом: компьютеры пользователей получают точное время от ближайшего контроллера домена, на котором они зарегистрировались. Все контроллеры домена в свою очередь получают точное время от DC с FSMO ролью «Эмулятор PDC», а контролер PDC синхронизирует свое время с неким внешним источником времени. В качестве внешнего источника времени может выступать один или несколько NTP серверов, например time.windows.com или NTP сервер вашего Интернет-провайдера. Также нужно отметить, что по умолчанию клиенты в домене синхронизируют время с помощью службы времени Windows (Windows Time), а не с помощью протокола NTP.
Если вы столкнулись с ситуацией, когда время на клиентах и контроллерах домена различается, возможно, в вашем домене есть проблемы с синхронизацией времени и эта статья будет вам полезна.
В первую очередь выберите подходящий NTP сервер, который вы могли бы использовать. Список общедоступных NTP серверов доступен на сайте . В нашем примере мы будем использовать NTP сервера из пула ru.pool.ntp.org:
- 0.ru.pool.ntp.org
- 1.ru.pool.ntp.org
- 2.ru.pool.ntp.org
- 3.ru.pool.ntp.org
Настройка синхронизации времени в домене с помощью групповых политик состоит из двух шагов:
1) Создание GPO для контроллера домена с ролью PDC2) Создание GPO для клиентов (опционально)
Настройка политики синхронизации NTP на контролере домена PDC
Этот шаг предполагает настройку контроллера домена с ролью эмулятора PDC на синхронизацию времени с внешним NTP сервером. Т.к. теоретически роль эмулятора PDC может перемещаться между контроллерами домена, нам нужно сделать политику, которая применялась бы только к текущему владельцу роли PDC. Для этого в консоли управления Group Policy Management Console (GPMC.msc), создадим новый WMI фильтр групповых политик. Для этого в разделе WMI Filters создадим фильтр и именем PDC Emulator и WMI запросом:
Select * from Win32_ComputerSystem where DomainRole = 5

Затем создайте новую GPO и назначьте ее на контейнер Domain Controllers.

Нас интересуют три политики:
- Configure Windows NTP Client: Enabled (настройки политики описаны ниже)
- Enable Windows NTP Client: Enabled
- Enable Windows NTP Server: Enabled

В настройках политики Configure Windows NTP Client укажите следующие параметры:
- NtpServer: 0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1 3.ru.pool.ntp.org,0x1
- Type: NTP
- ResolvePeerBackoffMinutes: 15
Совет. Не забудьте настроить межсетевой экран таким образом, чтобы сервер PDC мог получить доступ к внешним NTP серверам по протоколу NTP (UDP порт 123).

Примечание. Обратите внимание на синтаксис в поле NtpServer. Формат указания нескольких NTP серверов такой:ntsrv1.org,0x1 ntpsrv2.org,0x1 (разделитель пробел). На скриншоте указаны ошибочные данные!
Примените созданный ранее фильтр PDC Emulator к данной политике.

Совет. Найти имя сервера с ролью PDC можно с помощью команды:
netdom query fsmo
Осталось обновить политики на контроллере PDC:
gpupdate /force
Вручную запустите синхронизацию времени:
w32tm /resync
Проверьте текущие настройки NTP:
w32tm /query /status
Совет. В том случае, если время не синхронизировалось, перезапустите службу времени Windows и сбросьте текущие настройки:
net stop w32timew32tm.exe /unregisterw32tm.exe /registernet start w32time
Настройка синхронизации времени на клиентах домена
В среде Active Directory по умолчанию клиенты домена синхронизируют свое время с контролерами домена (опция Nt5DS – синхронизировать время согласно иерархии домена). Как правило, эта схема работает и не требует перенастройки. Однако при наличии проблем с синхронизацией времени на клиентах домена, можно попробовать принудительно назначить сервер времени для клиентов с помощью GPO.
В качестве сервера NTP укажите имя или ip адрес PDC, например msk-dc1.winitpro.ru,0x9, а в качестве типа синхронизации — NT5DS

Обновите настройки групповых политик на клиентах и проверьте, что клиенты успешно синхронизировали свое время с PDC.
Совет. Указанная схема применима только к небольшим доменам. Для больших распределенных доменов с большим количеством DC и сайтов придется создать отдельную политику для каждого сайта, чтобы клиенты синхронизировали свое время с DC в сайте.
Пишем BAT(батник) файл для запуска и остановки службы в Windows
Возникла необходимость автоматизировать для пользователей запуск и остановку определенной службы Windows. Самое просто на первый взгляд, создание батника или Bat файла Windows. Есть и другие варианты, но решил сделать именно через батник.
Вроде все не сложно, но как всегда в Windows все не так просто, или просто, но глупо.
1. Задача: В системе есть программа, и её Бета-версия. Запуск основной, по ярлыку. Запуск Бета-версии только после запуска службы, по окончанию, отключение этой службы. Ничего сложного нет, зайти в службы и в зависимости от задачи «включить/выключить». Но вот для некоторых сотрудников это целая проблема. Поэтому пишем батник!
2. Структура батника. После поиска структуры батника, пришел к этому варианту:
3. Меняем отражение расширений файлов. По умолчанию в Windows не отражаются расширения файлов. Правим на примере Windows 10: — открываем любую папку; — вверху вкладка «Вид», «Параметры», «изменить параметры папок и поиска»; — вкладка «Вид», спускаемся до поля «Скрывать расширения для. » — снимаем галку.
Теперь файлы, в частности на рабочем столе имеют вид (на примере TXT файла): Было «Файл», Стало «Файл.txt»
4. Создаем файл батника. Создаем «txt» файл и переименовываем его в «Запуск службы.txt». Открываем, пишем наш Bat файл:
Где взять имя службы? Открываем службы, находим нужную, открываем и смотрим поле «Имя службы»:
В итоге у нас будет:
net start AtolLicSvc(Если служба AtolLicSvc, у вас ваш вариант)
Сохраняем и переименовываем файл с «Запуск службы.txt» в «Запуск службы.bat«
5. Проверяем работу службы. Казалось бы все! Но нет! Это же Windows! Выскакивает окно запуска службы и пропадает. А служба как спала так и спит. Что не так? Все дело в правах админа. Вроде не сложно, но пояснять сотрудникам, запускайте с правами админа, слишком сложно для их понимания! Читаем по быстрому инфу «как запустить bat файл от имени админа автоматический?», ответ:
ничего сложного. — «правой кнопкой мыши на файле», «свойства»; — вкладка «ярлык», . эмм. а где она? О_о
6. Вносим правки, создаем ярлык
Логично, вкладки нет, это не ярлык! Создаем из нашего батника «Запуск службы.bat» «Ярлык»: убираем батники подальше от рук пользователей, допустим на диск D. Правой кнопкой мыши на батнике: «отправить», «рабочий стол (создать ярлык)». И вот уже на ярлыке:
— «правой кнопкой мыши на ярлыке», «свойства»; — вкладка «ярлык», кнопка «Дополнительно»; — ставим галку «запуск от имени администратора».
7. Повторный запуск службы через BAT файл. После этих манипуляций, если запустить ярлык «Запуск службы.bat — ярлык», служба стартует, согласно структуре в файле «net start AtolLicSvc»
Для батника который будет останавливать службу, все тоже самое. И да, вариантов решения задачи много, спорить не буду, но описал вариант решения который применил сам.
Сделай сам
Блог о самоделках, поделках, программировании на ява скрипте и iMacros, написании собственных программ, и заработку в интернете. А так же некоторые тонкости и настройки броузера Mozilla и других программ.
Bat файл остановки обновления Windows 10 навсегда и запуск.
Как сделать бат-файл остановки обновления виндовс 10? Поскольку про то, как остановить обновления виндовс 10 я писал ранее, то по этому же методу можно написать бат файл, который будет менять учетную запись, с которой запускается обновления вин 10.
Подробнее как это работает смотрите в видео ролике канала Prodvigatel.
4 комментария
Решает сразу 2 проблемы — спасибо за батник)))
спасибо за батники. попробовал-ВСЕ РАБОТАЕТ!СПАСИБО!
привет. нет, на новых версиях виндовс это перестало работать. на 17,18й версии работает, но вроде на 19й уже нет. глянь вот этоhttps://www.youtube.com/watch?v=SkvHxjPY0xc&t=0sи тоже самое сделай со службой Центр обновления виндовскогда понадобятся обнолвения, все можно вернуть обратно, убрав пару галок.
винда сбрасывает службу и запуск по умолчанию. если поставить запрет на запуск, тогда она не сможет менять. глянь видео, которое в комент кинул. вот это то что нужно
Ребят, как из bat файла запустить нужную службу?
Re:C этого я начал :))) Ясно 🙂 У себя я делал переключение так — два батника, один для замены 1.5 на 2.0, второй — обратно. Работало без ошибок.
cd E:AppsFB_1_5in instsvc remove instreg remove del e:winntsystem32bclient.dll del e:winntsystem32gds32.dll
cd E:AppsFB_2_0in instsvc install instreg install copy fbclient.dll e:winntsystem32 copy gds32.dll e:winntsystem32
net start FirebirdServerDefaultInstance
cd E:AppsFB_2_0in instsvc remove instreg remove del e:winntsystem32bclient.dll del e:winntsystem32gds32.dll
cd E:AppsFB_1_5in instsvc install instreg install copy fbclient.dll e:winntsystem32 copy gds32.dll e:winntsystem32
чуть поправлю net start «короткое имя службы»
Короткое имя можно посмотреть в панельке служб, тыкнув на службу и глянув в поле «имя службы».
Имя службы — оно не длинное и не короткое, оно одно и отображается, как ты справедливо заметил, именно в указанной оснастке. Но чаще всего — оно намного длиннее, чем имя файла, ее запускающее (даже со со всеми ключами).
в моем посте все правильно кроме слов «тыкнув на службу». надо читать — «дважды тыкнув на службу и в открывшемся окне . «.
Создание BAT файлов
Люди, которым знаком термин батник , знают, что BAT файлы могут существенно упростить жизнь и экономить время, если уметь их правильно писать и использовать. В этой статье я расскажу о том, как создавать BAT файлы и познакомлю вас с распространенными ошибками, которые обычно возникают при их написании.
Создать BAT файл очень просто. Достаточно открыть блокнот и сохранить пустой лист с расширением .bat , выбрав опцию Сохранить как. и написав в поле Имя файла что-нибудь оканчивающееся на .bat , например test.bat . Тип файла указываете как на скриншоте ниже — Все файлы . Сохраняете и получаете BAT файл.

Редактировать BAT файл можно в блокноте или любом другом текстовом редакторе, ориентированным на работу с кодом.
Теперь перейдем непосредственно к практической информации. В сети многие ищут ответ на вопрос Как быть с пробелами в BAT файлах? . В путях к папкам и исполняемым файлам наличие пробела вызывает ошибку. Самый распространенный ответ: Заключи путь в кавычки . И этот ответ не верен. Правда некоторые будут с пеной у рта утверждать, что он работает. Итак, появилось два почему — почему не верен и почему некоторые будут .
На Windows (как, впрочем, и на UNIX) установленные в системе программы соответствующим образом регистрируются системой. Поэтому некоторые из установленных программ могут запускаться одной простой командой из BAT файла или из апплета Выполнить панели Пуск . Одной из таких программ является Firefox:
Если после этой команды писать путь к исполняемому файлу, то происходит следующее: запускается обозреватель Firefox и пробует обработать запрос, то есть файл, путь к которому указан. То есть, если указать следующее:
Обозреватель откроется, чтобы не было написано после start firefox . Именно поэтому некоторые товарищи будут уверять что все прекрасно работает. Однако, если взять портативную программу, то ситуация окажется совсем иная. Рассмотрим в качестве примера ftp-клиент Filezilla. Поскольку система не знает о программе, вышеупомянутая строчка
работать не будет. Чтобы запустить неизвестную системе программу, надо указать к ней путь:
Длинныe имена в bat-файлах
Теперь поговорим о путях и пробелах. Первый способ избежать этой проблемы — использование короткого имени.
В примере два имени с пробелами. Заменим их короткими. Правила создания коротких имен следующие: в коротком имени используются первые шесть символов имени без учета пробелов, после имени указывают порядковый номер папки с помощью символа
. Так как папки Program Files и Sound Club у меня в единственном числе, получится следующее:
Если рядом будут присутствовать две папки, например Sound Club и Sound Clown , то следуя правилам, в примере выше надо будет указать SoundC
2 , так как в этом случае Sound Club окажется вторым именем (имена считаются в алфавитном порядке).
Но этот способ неудобен тем, что приходится указывать порядковые номера. Ситуация с Program files более менее нормальная. Мало у кого встретится две подобные папки на системном диске. Но если вы решили установить несколько продуктов Mozilla на свой компьютер. У вас получится несколько папок, например:
Короткими именами для них будут
А теперь представьте, что вы написали BAT файл с упоминанием этих программ. Если удалить Firefox, оставшиеся записи перестанут работать, а если удалить Thunderbird, перестанет работать запись для Sunbird. Короче, способ с короткими именами — не наш способ.
Пробелы и кавычки в bat-файлах
Кавычки на самом деле работают, но не с теми способами, которые обычно советуют. Советуют обычно следующее:
Так команда не сработает, поскольку если посмотреть справку по ней ( start /? ), то в справке вы увидите следующее:
Как видите, первым параметром идёт заголовок окна и он как раз в кавычках. Этот параметр необязательный, но его всё же советуют указывать (например, тут), чтобы избежать ошибок при выполнении команды. Внутри кавычек можно ничего не писать. Получится так:
Также сработает и вариант с заключением в кавычки всех имён с пробелами по отдельности:
Однако, в ряде случаев не работает ничего из вышеописанного. В таких случаях я могу посоветовать использовать команду cd . Переходим на системный раздел, затем с помощью cd в папку Program Files и запускаем программу ( start ):
Я думаю, что такой способ будет работать везде. Теперь еще пара важных моментов. Допустим вы создали батник, запускающий три программы и вам нужно на время исключить запуск одной из трех. Это можно сделать удалением строки или ее комментированием. Первый способ — вандальный, а второй смотрите ниже.
В данном случае отключен запуск установленной в системе программы Defraggler.exe. Комментируют строки, указывая команду rem в начале строки. Все BAT файлы выполняются в окне консоли. Чтобы оно исчезало по окончании выполнения команд, не забывайте в конце писать команду на выход exit.
Запуск приложений из bat-файла
В первой части статьи я в общих чертах рассказал о BAT файлах. Теперь стало понятно — что это такое и с чем его едят. Во второй части речь пойдет уже о более конкретных вещах. Например, о том, как при помощи BAT файла запустить несколько приложений с определенными настройками или в автоматическом режиме установить программу, чтобы не тратить время на ответы типа Вы согласны с условиями лицензионного соглашения? и не нажимать лишние кнопки.
Выше было изложено несколько способов запуска приложений при помощи BAT файла. Самый первый — это короткая команда на запуск установленной в системе программы.
Это не всегда работает. Поэтому такой прием можно вполне применять на какой-то конкретной системе, но в качестве универсального решения он не подходит. Если есть цель заставить работать BAT файл везде и всегда, нужно пользоваться полными путями:
Также я отметил, что в BAT файле обязательно должна присутствовать команда на завершение:
Запуск программ в bat-файлах с параметрами (ключами)
Программу можно не просто запускать, а давать ей дополнительные команды при запуске. Например, скомандовать запускаться свернутой:
Скомандовать в данном случае — значит указать ключ. Ключ указывается через слэш после основной команды ( команда /ключ ). Основной командой в данном случае является start . Правда ключ min работает только в половине случаев, потому как относится именно к команде запуска start , а не к программам, которые эта команда запускает.
Вообще ключей существует очень много и наборы ключей разных программ могут существенно различаться. Есть, правда, несколько общих. Например, ключ справки ( /? или /help ). Чтобы проследить работу этого ключа, рассмотрим практический пример. Откройте консоль (Жмёте + R , вводите cmd , далее Enter ) и набираете в консоли следующее:
Консоль выведет на экран перечень допустимых ключей c комментариями для команды start .

Обратите внимание на ключ /wait . В некоторых случаях он бывает просто незаменим. Например, вы решили с помощью BAT файла распаковать архив с программой и эту самую программу запустить. В батнике получится две команды — на распаковку и на запуск. Поскольку команды при запуске BAT файла выполнятся почти одновременно, архив распаковаться не успеет и запускать будет нечего. Поэтому будет ошибка. В этом случае на помощь придет ключ /wait:
Таким образом система сначала выполнит первое действие, дождется его завершения и только после этого приступит ко второму. Если необходимо подождать конкретный отрезок времени, то проще воспользоваться консольной утилитой Sleep. В нужном месте BAT файла пишете следующую команду (число — количество секунд):
С помощью ключей можно делать многое. Есть возможность устанавливать приложения в тихом режиме. Для этого используется несколько ключей в зависимости от типа инсталятора, применяющегося для установки программы на компьютер:
В ряде случаев бывает очень удобно. Антивирус Avast имеет опцию тихой установки в корпоративной версии. В бесплатной (домашней) версии тихой установки якобы нет. Однако, если вы в курсе как работает инсталятор InstallShield , вы поймете, что это утка , так как этот инсталятор сам по себе поддерживает ключ тихой установки /S . А значит все продукты, выполненные на его базе — тоже. И Avast не исключение. Просто создаете в папке с Avast’ом BAT файл с содержанием
Есть и другие возможности по управлению программами при помощи BAT файлов. Можно запустить программу, приказав ей открыть файл при запуске. Я пользуюсь этим способом при разработке сайтов. Очень удобно, когда весь твой инструментарий открывает нужные документы и папки нажатием всего одной кнопки:
Отмечу, что все вышеописанные приемы можно применять в различных комбинациях и сочетаниях.
Но важно помнить: всё, что касается выполнения запускаемой в батнике программы, пишется с ней в одной строке.
В качестве эпилога предложу для ознакомления конвертер BAT файлов в приложения формата .exe — Bat_To_Exe_Converter. BAT файл — это не всегда эстетично, а с помощью конвертера можно запаковать батник в exe’шник, оформив его любой иконкой на ваш выбор.
Наткнулся ещё на один конвертер BAT в EXE, можете рассмотреть в качестве альтернативы предыдущей программе: Advanced Bat To Exe Converter
В этой статье показано, как настроить службу времени Windows (NTP) в Windows Server 2016, чтобы она действовала как NTP-сервер для клиентских компьютеров домена.
Немного теории
Синхронизация времени — важный и во многом достаточно критичный аспект работы Active Directory, особенно сегодня, когда широко используется взаимодействие с внешними системами и работа с сотрудниками, которые могут находиться в различных часовых поясах. Применение систем виртуализации вносит дополнительные особенности, которые также следует учитывать. Поэтому данный вопрос может оказаться не столь простым, как кажется, а синхронизация с внешним источником точного времени становится одной из актуальных задач.
Прежде всего вспомним, как происходит синхронизация времени в Active Directory. В качестве эталона времени выступает контроллер, владеющий ролью эмулятора PDC. Это FSMO-роль и эмулятором PDC может являться только один контроллер в каждом домене. С ним синхронизируют время остальные контроллеры домена. Доменные ПК и рядовые серверы сверяют часы с ближайшим контроллером домена.
Сам эмулятор PDC в качестве источника точного времени может использовать либо аппаратные часы материнской платы, либо внешний источник точного времени, при нахождении в виртуальной среде также может быть использовано время хоста виртуализации.
О последней поговорим более подробно. Раньше все было довольно просто, источником времени в домене обычно служили аппаратные часы эмулятора PDC, ну отстали или убежали на пару минут, в конце концов можно и подвести. Когда добавилось требование взаимодействия с внешними системами критичными к точному времени (например, использующих криптографию), то в качестве источника времени стал выступать внешний сервер. От него получал время эмулятор PDC, с ним синхронизировались контроллеры, а от них точное время расходилось на остальных участников домена.
Работа PDC эмулятора
С приходом виртуализации все изменилось, появился еще один источник времени — время хоста виртуализации. Многие гипервизоры по умолчанию имеют включенной настройку синхронизации времени гостевых систем и при попадании в виртуальную среду контроллера может возникнуть следующая коллизия: контроллер синхронизирует время с хостом, но сам хост, являясь членом домена, в свою очередь синхронизируется с контроллером.
Еще хуже, если в виртуальную среду попадает эмулятор PDC, в силу особенностей таймера виртуальных машин, время внутри может достаточно сильно плавать, поэтому виртуальный эмулятор PDC всегда должен синхронизировать время с внешним источником, а синхронизация времени с хостом должна быть отключена, последнее касается и всех остальных виртуальных членов домена.
Проверяем откуда сервер берет время
Давайте перейдем от теории к практике. Начнем с того, что выясним кто из контроллеров является эмулятором PDC и эталоном времени для домена. Это можно сделать на любом контроллере домена командой:
В выводе будут показаны все хозяева операций, нас интересует только эмулятор PDC.
Затем перейдем на указанный контроллер и узнаем источник времени для него, для этого выполните команду:
w32tm /query /source
Если в выводе вы увидите:
Local CMOS Clock
Free-Running System Clock
то источником времени являются аппаратные часы. А если там будет:
VM IC Time Synchronization Provider
то вы имеете дело с виртуальной машиной, которая синхронизирует время с хостом.
Данную настройку следует исправить, это можно сделать в настройках виртуальной машины, отключив синхронизацию времени с хостом, либо в самой системе, для этого откройте ветвь реестра:
и установите для параметра Enabled значение 0.
После данного изменения следует перезапустить Службу времени Windows как показано ниже или перезагрузить компьютер.
net stop w32time
net start w32time
Далее будет показана быстрая настройка NTP клиента на сервере и более расширенная.
Быстрая настройка NTP на Windows Server 2016
На вашем Windows Server 2016 нажмите кнопку Windows и введите: PowerShell, щелкните правой кнопкой мыши и выберите «Запуск от имени администратора».
Введите следующие команды
Конечно, вы можете взять любой NTP-сервер, какой захотите. Я брал отсюда
Теперь проверьте, правильно ли настроен сервер времени на вашем сервере Server 2016, набрав:
Расширенная настройка NTP на Windows Server 2016
Расширенная настройка нашего эмулятора PDC на работу с внешними источниками точного времени. Все изменения также будут вноситься через реестр. Прежде всего изменим тип сервера на NTP, для этого откроем ветку
и для параметра Type укажем строковое значение NTP. А для параметра NtpServer зададим адреса серверов точного времени, после каждого из которых, через запятую укажем 0x8, если мы хотим работать как стандартный NTP-клиент или 0x1 если будем использовать собственные параметры, например:
ntp1.stratum2.ru,0x1 ntp2.stratum2.ru,0x1 ntp4.stratum2.ru,0x1
После чего в
Затем перейдем в
и установим для параметра AnnounceFlags значение A.
Значение «AnnounceFlags» может составлять сумму его флагов, например:
10=2+8 — NTP-сервер заявляет о себе как о надежном источнике времени при условии, что сам получает время из надежного источника либо является PDC корневого домена. Флаг 10 задается по умолчанию как для членов домена, так и для отдельно стоящих серверов.
5=1+4 — NTP-сервер всегда заявляет о себе как о надежном источнике времени. Например, чтобы заявить рядовой сервер (не контроллер домена) как надежный источник времени, нужен флаг 5;
Следующие параметры будут работать, только если мы при указании серверов добавили 0x1, иначе будут использоваться настройки, предлагаемые сервером. Чтобы задать период синхронизации откройте ветку
и для параметра SpecialPollInterval укажите десятичное значение в секундах.
И зададим максимальное время опережения и отставания часов, после которых синхронизация производиться не будет. Для этого используются параметры MaxPosPhaseCorrection (опережение) и MaxNegPhaseCorrection (отставание) для которых также следует задать десятичное значение в секундах. По умолчанию стоит 48 часов. Это значит, что если время на эмуляторе PDC уйдет от точного источника более чем на 48 часов в любую сторону, то синхронизация производиться не будет.
Если вы хотите, чтобы время синхронизировалось всегда, то установите в оба параметра шестнадцатеричное значение FFFFFFFF.
Выполнив настройки перезапустите Службу времени Windows, это также можно сделать в командной строке:
После чего еще раз выполним команду чтобы показать источники времени и их состояние
w32tm /query /peers
выполняем еще команду
и убедимся, что источником времени для эмулятора PDC является внешний сервер.

Затем выполним данную команду на рядовых контроллерах домена, в качестве источника времени там должен быть указан эмулятор PDC, и на обычных ПК, где в выводе будет присутствовать любой из контроллеров домена. Обязательно выполните контроль для виртуальных машин, чтобы быть уверенным, что они используют время домена, а не хоста виртуализации.
Проверка работы NTP сервера (Живой ли внешний NTP сервер с которого мы берем время)
В Windows, нужно открыть командную строку и выполнить команду w32tm со специальными параметрами. Где ntp1.stratum2.ru — это NTP сервер
w32tm /stripchart /computer:ntp1.stratum2.ru /dataonly /samples:3
Ответ будет содержать локальное время, и разницу со временем на указанном NTP сервере. Например:
На данном выводе видно что погрешность синхронизации составяляет +00.0098812s
Список команд w32tm
Основные команды конфигурации w32tm
- w32tm /register — Регистрация и включение службы со стандартными параметрами.
- w32tm /unregister — Отключение службы и удаление параметров конфигурации.
- w32tm /monitor — Просмотр информации по домену.
- w32tm /resync — Команда принудительной синхронизации с заданным в конфигурации источником.
- w32tm /config /update — Применить и сохранить конфигурацию.
- w32tm /config /syncfromflags:domhier /update – Задаем настройку синхронизации с контроллером домена.
- w32tm /config /syncfromflags:manual /manualpeerlist:time.windows.com – задать конкретные источники синхронизации времени по протоколу NTP.
Просмотр параметров (/query)
- w32tm /query /Source – Показать источник времени.
- w32tm /query /Configuration — Вывод всех настроек службы времени Windows.
- w32tm /query /Peers – Показать источники времени и их состояние.
- w32tm /query /Status – Статус службы времени.
- w32tm /query /Verbose – Подробный вывод всей информации о работе службы.
За настройку NTP через политики надо больно бить по рукам.
1. В доменной среде ничего не надо делать, контроллеры берут время с PDC, клиенты с контроллера.
2. Точности времени секунда в секунду не добьетесь.
Больная тема для меня. Предыдущие админы нахреначили синхронизацию чуть ли не в 10 разных политиках, до сих пор натыкаюсь и с матами удаляю.
Есть проблема с синхронизацией времени?
На всех контроллерах:
1. Убиваем службу w32time
2. Грохаем ветку реестра HKLMSystemCurrentControlSetservicesW32Time3. Регистрируем службу заново
4. Проверяем, что параметр TYPE в HKLMSystemCurrentControlSetservicesW32TimeParameters равен NT5DS
Конфигурация NTP-сервера
Задаем тип синхронизации внутренних часов, на использование внешнего источника.
NoSync — NTP-сервер не синхронизируется с каким либо внешним источником времени. Используются системные часы, встроенные в микросхему CMOS самого сервера.
NTP — NTP-сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра NtpServer.
NT5DS — NTP-сервер производит синхронизацию согласно доменной иерархии.
AllSync — NTP-сервер использует для синхронизации все доступные источники.
На PDC настраиваем синхронизацию с внешним поставщиком времени
5. И ничего б*ть не трогаем!=) Через какое-то время время стабилизируется.
Для понимания — время не импортируется, оно сверяется и подгоняется под эталон.
Не забываем, что для керберос разница в 5 минут не критична.
Хитрожопых кадровиков и безопасников, желающих снихронить свои убогие СКУДы с виндовыми тачками слать надолго и подальше.
Всё, я кончил =)
===
ПК не знает и никак не узнает, что PDC сменился. Так что политика обязательно должна быть!
===
А ему не надо знать. Он кричит в сеть «PDC!!!», а те сами знают, кому из них отозваться. У них DNS для этого есть.
Но, есть множество талантливой молодежи, или просто проницательных людей, которые с огромным удовольствие захотят засунуть свой нос в вашу систему. Конечно, большинство простых обывателей не будет извращаться над собой используя Windows NT или Windows 2000, да и Семерка все чаще наступает на горло «простенькому» ХР, но, командная_строка в мире операционных систем, это все ровно, что таблица умножения в мире финансов.
В Панели управление/Администрирование находится оснастка Службы, которая позволяет управлять рядом сервисов. Двойной щелчок по любой из них позволяет просмотреть ряд параметров:
Вкладка Общие показывает состояние, тип запуска, описание, исполняемый файл и другую информацию. Использование CMD позволяет получить аналогичную информацию, а также управлять состоянием и запуском служб, используя командную строку:
Sc start Имя_Службы – производится запуск службы из командной строки
Sc pause Имя_Службы – приостановка сервиса
Sc continue Имя_Службы – восстановление работы приостановленного сервиса
Sc stop Имя_Службы – полная остановка
Эти команды можно применять и на удаленных машинах. Например, что бы запустить УдаленныйРеестр на машине с адресом 192.168.1.6., надо прописать (вместо IP можно и имя машины прописать, например Mailer):
192.168.1.6 start RemoteRegistry
Хотя, запустить службу из командной строки можно и при использовании утилиту net start, или net stop соответственно (net stop RemoteRegistry)
Что бы настроить тип запуска применяется команда sc config (хотя ее возможности этим не ограничиваются). Синтаксис следующий:
config ИмяСлужбы start флаг
Флаг может принимать три значения:
- Auto – автоматический запуск при старте системы
- Demand – ручной запуск
- Disable – отключение
192.168.1.6 config RemoteRegistry start disable
тут мы отключили RemoteRegistry на удаленной машине. Стоит помнить, что отключение сервиса его не останавливает, после перезагрузки он может вновь запустится.
На вкладке Вход в систему видно, что сервис можно запускать или от имени системной учетной записи, или от имени любой другой учетной записи. Так, что бы запустить службу из командной строки под тои или иной учетной записью, используется синтаксис:
config ИмяCлужбы obj ИмяУчетнойЗаписи
В данном примере УдаленныйРеестр грузится под ЛокальнойСлужбой (NT AUTHORITYLocalService), а можно и под системной учетной записью (LocalSystem), но лучше этого не делать:
config RemoteRegistry obj LocalSystem
Если использовать флаг type= interact, то это укажет, что сервис может взаимодействовать с рабочим столом Windows:
config RemoteRegistry obj LocalSystem interact own
Используя команду sc qc ИмяСлужбы можно детально просмотреть информацию о ней, в том числе и тип запуска, например:
Может возникнуть необходимость сделать запуск определенной службы, используя командную строку, не от имени системы, а от имени пользователя, в таком случае надо указывать имя учетной записи и пароль, например:
config ИмяСлужбы obj ДоменПользователь
password пароль own
Рассмотрим несколько способов запустить программу от имени администратора в Windows 10, для исправления ошибок: «CreateProcess сбой, код 740«, «Запрошенная операция требует повышения«, «Отказано в доступе» и др., возникающих при запуске программ с ограниченными правами (пользователь, гость).
По умолчанию программы и игры в Windows 10 запускаются без прав администратора, чтобы предотвратить несанкционированные изменения в вашей системе. Но частый случай, когда для корректной работы программы требуются запуск с повышенными правами (администратор), для правильной работы или выполнения определенных команд.
⚠️ Внимание: для запуска программы с повышенными правами, вам потребуется знать пароль администратора!
Значок приложения
Как выполнить запуск программы от имени администратора однократно, с помощью значка программы (иконки):
- Щелкните правой клавишей мыши на иконке программы;
- Выберите Запуск от имени администратора.

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

Эта настройка позволит постоянно запускать эту программу с повышенными правами только для этого пользователя. Если вы хотите разрешить запуск программы с правами администратора для всех пользователей компьютера, в предыдущем окне нажмите кнопку Изменить параметры для всех пользователей и установите галочку Запускать эту программу от имени администратора.
Запуск программы с повышенными правами используя контекстное меню, в меню Пуск.
- Откройте меню Пуск (Ctrl+ESC);
- Найдите значок программы в списке Все программы;

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

Вы можете использовать сочетание Ctrl+Shift+Click на плитке приложения в меню Пуск.
Способ запуска программы с полными правами используя меню Выполнить.
- Нажмите сочетание клавиш Windows+R (или щелкните по кнопке Пуск правой клавишей мыши и выберите Выполнить);
- Введите имя команды или перетащите мышкой пиктограмму программы в окно ввода меню Выполнить;
- Нажмите сочетание клавиш Ctrl+Shift+Enter.

⭕ Если у вас не получается перенести иконку программы в меню Выполнить:
- Нажмите и удерживайте кнопку Shift, щелкните по пиктограмме программы правой клавишей мыши;
- Выберите пункт Копировать как путь;
- Выполните вставку из буфера обмена в окно Выполнить (нажмите комбинацию клавиш Ctrl+V).
Лента Проводника
🔔 Если в меню папки не отображается Лента проводника, нажмите сочетание Ctrl+F1.
- Выделите значок программы в Проводнике Windows;
- В меню папки откройте вкладку Средства работы с приложениями;
- Выберите пункт Запустить от имени администратора.

Окно Поиск
- Нажмите сочетание Windows+S (или щелкните по кнопке Пуск правой клавишей мыши и выберите Поиск);
- Введите название нужной программы;
- В правой части окна щелкните пункт Запуск от имени администратора.

Запуск программы от имени администратора используя командную строку (CMD)
Однократный способ запуска программы от имени администратора, используя командную строку Windows (CMD).
Простым способом запуска является запуск Командной строки от имени администратора, из которой выполняется запуск нужной программы. Но вы так же можете выполнить запуск из консоли CMD (с правами пользователя), используя команду runas.
- Запустите командную строку;
- Выполните команду runas, указав имя пользователя с административными правами и полный путь до файла запускаемой программы;
- Введите пароль пользователя с административными правами.

В примере, имя администратора MHelp.pro
Запуск программы от имени администратора используя PowerShell
Еще один способ запуска программы с повышенными правами — с помощью Microsoft PowerShell.
Простым способом запуска является запуск PowerShell от имени администратора и запуск необходимой программы. Но вы так же можете выполнить запуск из консоли PowerShell (с правами пользователя), используя команду start-process.
- Запустите PowerShell;
- Выполните команду start-process, указав полный путь до файла запускаемой программы;
- Введите пароль пользователя с административными правами.
start-process “C: otalcmdTOTALCMD.EXE” –verb runas

В некоторых случая использовать предыдущие способы может быть неудобно, создадим bat файл с инструкциями по запуску программы.
Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды.
- Запустим стандартное приложение Блокнот (Notepad);
- Указываем необходимую последовательность команд;
- В меню Файл выбираем пункт Сохранить как;
- В поле Имя файла указываем имя файла и дописываем расширение bat;
- В поле Тип файла указываем Все файлы;
- Нажимаем кнопку Сохранить.
Теперь запустить программу с правами администратора можно запустив созданный файл.

🟢 Как запустить программу от имени администратора обсуждалось в этой статье. Я надеюсь, что теперь знаете как исправить ошибку 740 или «Запрошенная операция требует повышения» запустив программу с повышенными правами, удобным способом. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.




