Создание службы с коротким именем и отображаемым именем прерывает WMI для служб

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

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

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

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

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

ИЗМЕНИТЬ Я не спрашиваю, как использовать sc. Это неважно. Я предоставил команды, которые можно запустить, чтобы воспроизвести проблему. Вы можете создать сервис с этими параметрами, как хотите.


person abc667    schedule 07.08.2020    source источник


Ответы (1)


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

Optionvalue

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

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

sc create "A1" binpath= "D:\foobar.exe" DisplayName= "A1" start= disabled
person EylM    schedule 10.08.2020
comment
Как это связано с моим вопросом? Кроме того, в документации, которую вы поднимаете, вы можете прочитать это: Обратите внимание, что нет пробела между именем параметра и знаком равенства? У меня нет проблем с выполнением команды sc - person abc667; 10.08.2020
comment
Внимательно прочтите документацию и перейдите к разделу. Обратите внимание, что между OptionValue и знаком равенства есть пробел. Если вы неправильно используете командную строку, не думаете ли вы, что это способ начать анализ проблемы? - person EylM; 10.08.2020
comment
Найдите строку, которую я опубликовал, и пример. - person EylM; 10.08.2020
comment
Я не понимаю, о чем вы говорите. Ваша команда всегда будет возвращать ошибку. Вы вообще это запускали? Это не вопрос sc, вы можете создать сервис с заданными параметрами, как хотите. Я спрашиваю, почему WMI ломается, а не как использовать sc - person abc667; 10.08.2020