У меня есть Microsoft.Management.Infrastructure, работающая в моем приложении, по крайней мере, до самого первого примера кода:
CimSession.Create(null)
.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_OperatingSystem")
.FirstOrDefault().CimInstanceProperties["Version"].Value.ToString();
Что мне нужно, так это использовать MMI, чтобы определить, блокируют ли какие-либо приложения на локальном компьютере определенный файл (см. a-memorymappedfile-is-in-use-c-net-core">этот вопрос, чтобы понять, почему подходы, отличные от MMI, не работают)
Я читал страницу за страницей документации по MMI, WQL, CIM и множеству других TLA, но не могу понять, как
1) задать вопрос "в каком процессе файл X открыт/заблокирован"?
or
2) перечислить все открытые/заблокированные файлы, чтобы я мог найти файл X
Важно - мне нужно сделать это в коде (запуск Process Explorer мне не подойдет).