tôi tiếp tục nhận được một "Truy vấn không hợp lệ" ngoại lệ khi cố gắng thực hiện các truy vấn sau đây:truy vấn WMI NET không hợp lệ
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskQuota WHERE QuotaVolume.DeviceID = 'C:'");
ManagementObjectCollection quotaCollection = searcher.Get();
Tuy nhiên công trình này: "SELECT * FROM Win32_DiskQuota".
Theo MSDN:
Đối với hầu hết cách dùng mô tả lớp trong một mệnh đề WHERE, WMI cờ truy vấn là không hợp lệ và trả về một lỗi. Tuy nhiên, sử dụng dấu chấm (.) toán tử cho thuộc tính của đối tượng kiểu trong WMI. Ví dụ, truy vấn sau đây là hợp lệ nếu Prop là một tài sản có giá trị của MyClass và là loại đối tượng:
SELECT * FROM MyClass ĐÂU Prop.embedprop = 5
Liệu nó có nghĩa này chỉ hoạt động nếu Dự án được tuyên bố là OBJECT?
Dưới đây là các chi tiết ngoại lệ:
System.Management.ManagementException was unhandled
HResult=-2146233087
Message=Invalid query
Source=System.Management
StackTrace:
в System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
в System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
в UserQuota.Program.getQuota() в c:\users\administrator\documents\visual studio 2015\Projects\UserQuota\UserQuota\Program.cs:строка 40
в UserQuota.Program.Main(String[] args) в c:\users\administrator\documents\visual studio 2015\Projects\UserQuota\UserQuota\Program.cs:строка 33
в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:
Trông đúng. Bạn cần phải nắm bắt ngoại lệ và dán nội dung vào [chỉnh sửa]. Gọi ToString trên đối tượng hoặc sử dụng hộp thoại ngoại lệ (nhấp vào liên kết "dán nội dung vào khay nhớ tạm" ở dưới cùng). – Will
Tôi đã thêm ngoại lệ nhưng có vẻ như nó không có nhiều chi tiết ... –
Tôi đã chỉnh sửa câu trả lời của mình bằng mã mẫu mà hy vọng sẽ hữu ích. – Tomer