Как найти область для ManagementScope?

#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();