Насколько я понимаю, в общем, WMI всегда будет возвращать набор из нуля или более элементов для любого ExecQuery. И если класс JACOB EnumVariant является лучшим способом получения информации от WMI (из примеров, которые я видел), то вам нужно перечислить ее так или иначе.
(Возможно, вы сможете сжать еще несколько строк, например EnumVariant enumVariant = new EnumVariant( mActiveXWMI.invoke("ExecQuery", new Variant(query)).toDispatch() );
- но это усложнит чтение и не повлияет на производительность или что-то в этом роде.)
Если вы уверены, что запрос вернет не более одного элемента - как в вашем примере - вы можете изменить выражение "while" на выражение "if" (и затем обработать регистр где он терпит неудачу в вашем предложении "else").
Но в остальном ... я не думаю, что это станет намного короче того, что у вас уже есть.