0
ManagementObjectSearcher servSearcher = new ManagementObjectSearcher(theScope, new ObjectQuery("SELECT * FROM Win32_Service"));                    
foreach (ManagementObject servObj in servSearcher.Get()){

}

Win32_Process不会触发任何错误,但在尝试访问时Win32_Service会出现管理异常(访问被拒绝)

System.Management.ManagementException: Access denied at 
System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)at
System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext() 
4

2 回答 2

1

尝试设置或添加 dword

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\LocalAccountTokenFilterPolicy = 1

在您要连接的机器上。就我而言,即使没有重新启动它也能正常工作。

于 2016-10-20T16:18:00.437 回答
0

ManagementScope通过添加一个和一个ConnectionOptions类尝试以下操作:

 ConnectionOptions options = new ConnectionOptions();
 options.EnablePrivileges = true;
 options.Impersonation = System.Management.ImpersonationLevel.Impersonate;

 ManagementScope scope = new ManagementScope("\\\\FullComputerName\\root\\cimv2",options);

 ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Service");
 ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); 

 ManagementObjectCollection queryCollection = searcher.Get(); 

 foreach (ManagementObject m in queryCollection) {
     Console.WriteLine(m["CheckPoint"]); 
 }

更多关于ConnectionOptions 类

于 2013-07-04T07:10:50.890 回答