Ich halte eine "Invalid Query" Ausnahme erhalten, wenn Sie die folgende Abfrage auszuführen versuchen:WMI .NET Ungültige Abfrage
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskQuota WHERE QuotaVolume.DeviceID = 'C:'");
ManagementObjectCollection quotaCollection = searcher.Get();
aber dies funktioniert: "* FROM Win32_DiskQuota SELECT".
MSDN Nach:
Für die meisten Anwendungen von Klasse-Deskriptoren in einer WHERE-Klausel, WMI markiert die Abfrage als ungültig und einen Fehler zurückgibt. Verwenden Sie jedoch den Punkt (.) -Operator für Eigenschaften des Typs Objekt in WMI. Zum Beispiel ist die folgende Abfrage gültig, wenn Prop gültige Eigenschaft von MyClass und ist Typ Objekt:
SELECT * FROM MyClass WHERE Prop.embedprop = 5
Ist es das funktioniert nur bedeuten, wenn Prop deklariert als OBJEKT?
Hier sind die Ausnahme-Details:
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:
rechts schaut. Sie müssen die Ausnahme abfangen und den Inhalt in [Bearbeiten] einfügen. Rufen Sie ToString für das Objekt auf oder verwenden Sie das Ausnahmedialogfeld (klicken Sie unten auf den Link "Inhalte in die Zwischenablage einfügen"). – Will
Ich habe die Ausnahme hinzugefügt, aber es scheint nicht viel Details ... –
Ich habe meine Antwort mit Beispielcode bearbeitet, die hoffentlich helfen wird. – Tomer