2012-03-14 4 views
1

Я пытаюсь запустить bat-файл удаленно (с XP на 2003) и столкнуться с проблемой подключения к любому пространству имен WMI, отличному от cimv2. В приведенном ниже коде исключается исключение «Not Found» в вызове «GetMethodParameters». Но если я заменил «каталог» на «cimv2», все будет подливать.WMI Namespace "Not Found"

ConnectionOptions theConnection = new ConnectionOptions(); 
theConnection.Username = conDet.User; 
theConnection.Password = conDet.Pwd; 
theConnection.Impersonation = ImpersonationLevel.Impersonate; 

ManagementScope theScope = new ManagementScope(String.Format(@"\\{0}\root\directory", conDet.Server), theConnection); 
theScope.Connect(); 

ManagementClass processClass = new ManagementClass(theScope, new ManagementPath("Win32_Process"), new ObjectGetOptions()); 

enter code here 
ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); 
inParams["CommandLine"] = filename; 

ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null); 

Я проверил безопасность на своем компьютере, а сервер и два пространства имен имеют одинаковые параметры безопасности. Любые идеи, что происходит?

Спасибо.

ответ

3

Вы используете неправильное пространство имен, класс WMI Win32_Process определен в root\cimv2.

Таким образом, вы должны переписать код для

ManagementScope theScope = new ManagementScope(String.Format(@"\\{0}\root\cimv2", conDet.Server), theConnection); 
+0

Так вы говорите, что только пространство имен, я могу подключиться, cimv2? Остальные лишены ограничений? – mpeterb

+0

Нет, я не говорю, что каждый раз, когда вы устанавливаете соединение WMI, вы должны указать конкретное пространство имен (область). Таким образом, вы можете подключиться к любому существующему пространству имен, но с использованием разных соединений WMI. – RRUZ

+0

Я вижу, большое спасибо. – mpeterb