Создание службы с коротким именем и DisplayName прерывает WMI для служб - PullRequest
3 голосов
/ 07 августа 2020

В последнее время у меня возникла проблема с WMI на одной из систем (win server 2019). Список служб в диспетчере задач был пуст, и при запуске Get-WmiObject Win32_Service из PowerShell возвращалось Generic failure. После бесплодных часов поиска и попыток восстановить систему я сдался и был готов переустановить систему. Затем ошибка была случайно воспроизведена на другом компьютере, и я смог сузить причину проблемы. После создания службы windows с коротким именем и кратким отображаемым именем WMI тормозит после перезапуска системы, но только если эта служба стоит первой (в алфавитно-цифровом порядке c) в списке служб. Чтобы воспроизвести этот эффект, вам нужно только запустить

sc create "A1" binpath="D:\foobar.exe" DisplayName="A1" start=disabled

binpath не имеет значения, службу запускать не нужно. DisplayName не обязательно должно совпадать с именем. После этой команды нужно перезагрузить (перед перезапуском все работает). После этого, если вы go попадете в список служб в диспетчере задач, он будет пустым (возможно, с использованием WMI для запроса списка служб). Теперь вы можете запустить sc delete "A1" и снова открыть диспетчер задач. Все вернулось в норму.

Проблема была воспроизведена на Windows Server 2019 и Windows 10 (не пробовал на других версиях).

Это известная ошибка или что есть здесь происходит?

EDIT Я не спрашиваю, как использовать sc. Это неважно. Я предоставил команды, которые можно запустить, чтобы воспроизвести проблему. Вы можете создать услугу с этими параметрами, как хотите.

1 Ответ

0 голосов
/ 10 августа 2020

Вы используете аргументы командной строки s c в неправильном формате. From MSDN :

Optionvalue

Задает значение для параметра с именем Optionname. См. Справочник по имени параметра для получения списка поддерживаемых значений. Когда необходимо ввести строку, использование пустых кавычек означает, что передается пустая строка. Обратите внимание, что между OptionValue и знаком равенства есть пробел.

Правильная команда должно быть:

sc create "A1" binpath= "D:\foobar.exe" DisplayName= "A1" start= disabled
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...