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()
尝试设置或添加dword
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\LocalAccountTokenFilterPolicy = 1
在您要连接的计算机上。就我而言,即使没有重启也能工作。
通过添加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"]);
}