2016-07-06 5 views
5

나는 다음 쿼리를 실행하려고 "잘못된 쿼리"예외가 계속. MSDN에 따르면 WMI .NET 잘못된 쿼리

: 절, WMI의에 플래그 쿼리 무효로하고 오류를 반환 WHERE A의 클래스 기술자의 대부분의 용도에 대한

. 그러나 WMI에서 개체 유형의 속성에 도트 (.) 연산자를 사용하십시오.

SELECT * MyClass에 FROM Prop.embedprop는 =

5는이 비로소 작동하는 경우를 뜻 : 소유는 MyClass에 유효한 속성이며 타입의 객체 인 경우 예를 들어, 다음 쿼리는 유효 OBJECT로 선언 된 소품?

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

잘 보이는 (... 모든 이스케이프주의)

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

:

대신, 다음과 같이 사용할 수 있습니다. 예외를 잡아서 그 내용을 [편집]에 붙여 넣어야합니다. 객체에서 ToString을 호출하거나 예외 대화 상자를 사용하십시오 (하단의 "내용을 클립 보드에 붙여 넣기"링크 클릭). – Will

+1

예외를 추가했지만 세부 사항이 충분하지 않은 것으로 보입니다 ... –

+0

샘플 코드로 내 대답을 편집했는데 도움이 될 것입니다. – Tomer

답변

1

예 :

다음은 예외 사항입니다. Win32_DiskQuota class documentation에 따르면 QuotaVolume 속성은 Win32_LogicalDisk WMI 클래스에 대한 참조입니다. 제공 한 MSDN의 인용문은 WQL 사양에 따라 쿼리가 유효하지 않은 이유를 설명했습니다.

+0

이것은 나를 위해 일했습니다. 고마워요! –