私は本当に単純なPowershellクエリを持っています:
Get-WmiObject -query 'ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"} WHERE AssocClass = Win32_LogicalDiskToPartition'
Windows 7(64ビット)マシンでは、これをPowershellで実行すると、単一の管理オブジェクトが正しく列挙されます。ただし、昇格したPowershellで同じクエリを実行すると、一時停止が長くなり、結果が得られません。
コードでWMIクエリを実行しようとすると(実際に実行しようとしていることです)、同様の問題が見つかります。プログラムを標高なしで実行すると、コードは機能し、標高付きで実行しても結果は返されません。これは、この問題を示す私のコードの最も単純なバージョンです。
static void Main(string[] args)
{
var query = "ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=\"C:\"} WHERE AssocClass = Win32_LogicalDiskToPartition";
var searcher = new ManagementObjectSearcher(query);
foreach (var o in searcher.Get())
{
Console.WriteLine(o);
}
Console.WriteLine("DONE");
Console.ReadLine();
}
なぜこれが起こるのですか?さらに重要なのは、とにかく、昇格して実行したときにこのクエリが正しく実行されることを保証できることです。最終的なプログラムは他の理由で昇格して実行する必要があるためです。