У меня две машины XP Pro SP3. Я отключил межсетевой экран. Имя рабочей группы - WORKGROUP. У меня есть учетная запись администратора с одинаковым именем пользователя/паролем в обоих. Мой код для подключения следующий:
ConnectionOptions options = new ConnectionOptions();
options.Username = myUsername;
options.Password = myPassword;
options.Authority = "ntdlmdomain:WORKGROUP"; // Commenting this or not makes no difference
ManagementScope scope = new ManagementScope(String.Format("\\\\{0}\\{1}", hostname, Namespace), options);
scope.Connect();
Я всегда получаю System.UnauthorizedAccessException
с текстом:
"Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
Вышеупомянутый код работает между двумя машинами, которые являются частью одного домена AD. Что я делаю неправильно?
Этот вопрос, касающийся удаленного доступа WMI и не связанный с С# (я ожидаю, что вы получите ту же ошибку с другими инструментами запросов WMI - например, WBEMtest), несколько раз возникал при сбое сервера: см. http://www.google.com/search?q=site%3Aserverfault.com+wmi+access+denied&ie=utf-8&oe=utf-8&aq=t
Отрегулируйте локальные политики и службы безопасности, чтобы разрешить всем, а также параметрам в папке запретить общий доступ. После этого я смог подключиться к двум компьютерам XP в рабочей группе WMI.
Это общая проблема WMI. См. WMI FAQ или документацию по защита удаленных соединений WMI.