[英]Get-WMIObject fails to enumerate Win32_LogicalDiskToPartiion in elevated powershell
我有一個非常簡單的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();
}
為什么會這樣? 更重要的是,無論如何,我可以確保在提升運行時此查詢將正確執行-因為最終程序由於其他原因將需要提升運行。
我想我找到了罪魁禍首-我有一個使用TrueCrypt安裝的加密驅動器。 當我卸下該驅動器時,枚舉工作正常,再次安裝時,問題再次出現。
我最好的猜測是WMI遇到了問題,因為加密的驅動器沒有分區-盡管在不運行提升驅動器時為什么可以工作完全是另一回事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.