Создайте коллекцию служб Windows, соответствующую регулярному выражению

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

Например, у меня есть 3 службы Windows под названием:

RCLoad1
RCLoad2
RCLoad3

мой Regex будет выглядеть примерно так: "^RCLoad*"

Я хотел бы использовать что-то вроде:

ServiceController[] myServices = ServiceController.GetServices(ServerName)
    .Where Regex.IsMatch(....)

Но я не могу заставить его работать.

1 ответ

Решение

Вы не уверены в точном сбое.

Есть ли GetServices(ServerName) на самом деле вернуть список предметов?

Впоследствии вы не упоминаете, какое свойство имеет имя сервера, Name? Поскольку код, который у вас есть, теперь принимает объекты ToString() который, скорее всего, по умолчанию использует имя типа и, следовательно, сбой. (?)

Найдите правильное имя свойства и используйте шаблон RCLoad, который найдет его где-нибудь в строке, а затем положить в ToList() такие как

Regex rgx = new Regex(@"RCLoad"); // RCLoad can be anywhere in the string.

var controllers = ServiceController.GetServices(ServerName)
                                   .Where(sc => rgx.IsMatch( sc.Name )) 
                                   .ToList();
Другие вопросы по тегам