#c# #scope
#c# #область
Вопрос:
Кто-нибудь знает, как найти область?
Microsoft говорит
ManagementScope scope = new ManagementScope("\\FullComputerName\root\cimv2");
Я работаю на localhost.
Я уже тестирую «\HOSTNAME root cimv2» и «\HOSTNAME MY_ACCOUNT_NAME cimv2», но они не работают.
Я на Windows 7 Pro, я использую Visual Studio 2010 и это .NET 4
#
Обновление 1
int i = Convert.ToInt32(processIds[index]);
String queryString = "select CreationDate from Win32_Process where ProcessId='" processIds[index] "'";
SelectQuery query = new SelectQuery(queryString);
ManagementScope scope = new System.Management.ManagementScope("\\XXX-PC\YYY\cimv2");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection processes = searcher.Get();
@keyboardP: Searcher.Get() работает с исключением, поэтому я полагаю, что моя область не подходит.
Комментарии:
1. Есть ли какие-либо сообщения об ошибках?
2. Я предполагаю, что вы получаете
Access Denied
исключение. Попробуйте добавитьConnectionOptions options = new ConnectionOptions(); options.Authentication = System.Management.AuthenticationLevel.PacketPrivacy;
перед областью.3. к сожалению, то же самое. Знаете ли вы, где можно увидеть исключение.
4. Добавьте try … catch вокруг
Get
метода.try{ ManagementObjectCollection processes = searcher.Get();}catch(Exception e){ Debug.WriteLine(e.ToString()); }
5. Спасибо. Debug говорит «Пространство имен недействительно», я не знаю, почему VisualStudio не останавливает компиляцию
Ответ №1:
Я уже довольно давно разрабатываю приложение, которое использует области управления. Я думаю, вам просто нужно опустить имя хоста.
Это работает для меня:
ManagementScope scope = new ManagementScope("\root\cimv2");
scope.Connect();