2013-05-14 3 views
5

http://msdn.microsoft.com/en-us/library/system.management.connectionoptions.aspxЯвляется ли это ошибкой или функцией ManagementScope?

ConnectionOptions co = new ConnectionOptions(); 
co.Username = CreateUserName(Domain, Username); 

Если я использую предыдущий код вместе с ManagementScope так:

ManagementScope ms = new ManagementScope("\\\\" + PcName + "\\root\\cimv2:Win32_Service='RpcSs'", co); 
ms.Connect(); 

Но если я использую неправильный домен все еще работает? Как мне исправить это. Почему это происходит?

Редактировать 1: При попытке доступа к удаленному компьютеру, у которого могут быть другие учетные данные и другой домен, чем у моей машины, это происходит (разрешено с неправильным доменом и правильной учетной записью администратора и правильным паролем).

Редактировать 2: Плохой домен в моем случае означает: домен, который не существует на этом компьютере или в другом домене, в котором не введен текущий пользователь.

Edit 3: Даже если я использую этот код:

options.Authority = "ntlmdomain:DOMAIN";//this won't work either. 

http://msdn.microsoft.com/en-us/library/system.management.connectionoptions.authority.aspx

+0

Почему нет? Представьте, что вы пытаетесь подключиться к «\\ pc-of-my-boss \ documents», вам будет предложено ввести ваши учетные данные (они могут быть для локального пользователя, для домена или для чего-либо, разрешенного на целевом компьютере). Если вы предоставляете неверные учетные данные, вы просто не сможете войти в систему. –

+0

Да, но мне разрешено делать кучу вещей, таких как перезапуск, даже несмотря на то, что учетные данные (особенно домен неправильный). –

+0

Нет, вы не сможете делать больше, чем может сделать этот пользователь (в соответствии с его правами на целевой машине) за вычетом того, какие политики разрешены (особенно в доменах). –

ответ

1

WBEMTEST является стандартом, чтобы знать, как ведет себя WMI. Обращаясь комментарий (@ Floradu88, 15 мая):

1) WBEMTEST не будет работать на удаленных соединений при передаче недействительны (недопустимый домен)

Это ожидаемое поведение, конечно

2) WBEMTEST для локального соединения работает «только без полномочий»

похоже, что это не может иметь т rickled вверх в документации по ManagementScope и ConnectionOptions, но:

Вы не можете изменить учетные данные при подключении к локальному компьютеру.
(MSDN: WMI Tasks: Connecting to the WMI Service)

Замечания
Не указывайте strUser, strPassword или strAuthority при подключении к локальному пространству имен.
(MSDN: IWbemLocator::ConnectServer)


Что касается вашего первоначального вопроса, потому что вы сказали, что WBEMTEST ведет себя, как и ожидалось, мы знаем, что WMI «работает» и это не случай проблема края как цель машина была настроена для приема анонимных соединений.

Возможно, ваша связь C# WMI использует учетные данные вызывающего пользователя, а не указанные (недопустимые) учетные данные. Попробуйте запустить тот же код, но на этот раз как пользователь на локальном компьютере, чья учетная запись не существует на удаленном компьютере.Если это не удается, это означает, что учетные данные вызывающего абонента использовались вместо явных учетных данных, которые вы хотели. Что, если это произошло, предложило бы ошибку в вашей реализации вызовов для олицетворения вручную указанных учетных данных при подключении к удаленному компьютеру.