2016-07-06 9 views
5

मैं एक "अमान्य प्रश्न" अपवाद है जब निम्न क्वेरी को निष्पादित करने की कोशिश कर जा रहे हैं।WMI नेट अमान्य क्वेरी

MSDN के अनुसार:

कहां खंड, WMI झंडे प्रश्न के रूप में अवैध और एक त्रुटि देता है एक में

वर्ग वर्णनकर्ता का सबसे उपयोगों के लिए। हालांकि, डब्लूएमआई में टाइप ऑब्जेक्ट के गुणों के लिए डॉट (।) ऑपरेटर का उपयोग करें। उदाहरण के लिए, निम्न क्वेरी मान्य है अगर प्रोप MyClass का एक मान्य संपत्ति है और प्रकार वस्तु है:

चुनें * MyClass से कहां Prop.embedprop = 5

यह यह केवल काम करता है अगर इसका मतलब यह है प्रोपे ऑब्जेक्ट के रूप में घोषित किया गया?

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: 
+0

सही लग रहा है:

इसके बजाय, आप कुछ इस तरह उपयोग कर सकते हैं। आपको अपवाद को पकड़ने और सामग्री को [संपादित करें] में पेस्ट करने की आवश्यकता है। ऑब्जेक्ट पर ToString को कॉल करें, या अपवाद संवाद का उपयोग करें (नीचे "क्लिपबोर्ड पर सामग्री पेस्ट करें" लिंक पर क्लिक करें)। – Will

+1

मैंने अपवाद जोड़ा है लेकिन लगता है कि इसमें अधिक जानकारी नहीं है ... –

+0

मैंने अपना जवाब नमूना कोड के साथ संपादित किया जो उम्मीदपूर्वक मदद करेगा। – Tomer

उत्तर

1

हाँ:

यहाँ अपवाद विवरण दिए गए हैं। Win32_DiskQuota class documentation के अनुसार, कोटावोल्म संपत्ति Win32_LogicalDisk WMI क्लास का संदर्भ है। आपके द्वारा प्रदान की गई एमएसडीएन से उद्धरण ने कारण दिया कि क्वेरी WQL चश्मे के अनुसार अमान्य क्यों है। (ध्यान दें सभी एस्केपिंग ...)

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskQuota WHERE QuotaVolume = \"Win32_LogicalDisk.DeviceID=\\\"C:\\\"\""); 
ManagementObjectCollection quotaCollection = searcher.Get(); 

+0

यह मेरे लिए काम किया, धन्यवाद! –

संबंधित मुद्दे