Je continue à obtenir une "requête non valide" exception lorsque vous essayez d'exécuter la requête suivante:WMI .NET requête non valide
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskQuota WHERE QuotaVolume.DeviceID = 'C:'");
ManagementObjectCollection quotaCollection = searcher.Get();
Cependant cela fonctionne: "SELECT * FROM Win32_DiskQuota".
Selon MSDN:
Pour la plupart des utilisations des descripteurs de classe dans une clause WHERE, drapeaux WMI la requête comme non valide et renvoie une erreur. Cependant, utilisez l'opérateur point (.) pour les propriétés de l'objet type dans WMI. Par exemple, la requête suivante est valide si Prop est une propriété valide de MyClass et est objet de type:
SELECT * FROM MyClass OÙ Prop.embedprop = 5
Est-ce que cela signifie cela ne fonctionne que si Prop déclaré comme OBJET?
Voici les détails d'exception:
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:
Attend droit. Vous devez attraper l'exception et coller le contenu dans un [edit]. Appelez ToString sur l'objet ou utilisez la boîte de dialogue d'exception (cliquez sur le lien "coller le contenu dans le presse-papiers" en bas). – Will
J'ai ajouté l'exception, mais il semble qu'il n'a pas beaucoup de détails ... –
J'ai édité ma réponse avec un exemple de code qui, nous l'espérons, aidera. – Tomer