2013-05-14 13 views
5

http://msdn.microsoft.com/en-us/library/system.management.connectionoptions.aspxCzy jest to błąd lub funkcja ManagementScope?

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

Jeśli używam poprzedni kod wraz z ManagementScope tak:

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

Ale jeśli mogę użyć nieprawidłowej domeny nadal działa? Jak mam to poprawić? Dlaczego to się dzieje?

Edytuj 1: Tak się dzieje (jestem uprawniony do złej domeny i poprawnego konta administratora oraz poprawnego hasła) podczas próby uzyskania dostępu do zdalnego komputera, który może mieć inne poświadczenia i inną domenę niż mój komputer.

Edytuj 2: Zła domena w moim przypadku oznacza: domenę, która nie istnieje na tym komputerze lub w innej domenie, w której obecny użytkownik nie jest obecny.

Edit 3: Nawet jeśli mogę użyć tego kodu:

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

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

+0

Dlaczego nie? Wyobraź sobie, że próbujesz połączyć się z "\\ pc-of-my-boss \ documents", pojawi się monit o podanie poświadczeń (mogą to być użytkownicy lokalni, domeny lub czegokolwiek na komputerze docelowym). Jeśli podasz błędne dane, po prostu nie będziesz mógł się zalogować. –

+0

tak, ale wolno mi zrobić kilka rzeczy, takich jak restart, mimo że poświadczenia (zwłaszcza domeny jest źle). –

+0

Nie, nie będziesz w stanie zrobić więcej, niż to, co może zrobić ten użytkownik (zgodnie z jego prawami na maszynie docelowej) minus zasady dozwolone (szczególnie w domenach). –

Odpowiedz

1

WBEMTEST jest średnia wiedzieć jak WMI zachowuje. Adresowanie swój komentarz (@ Floradu88, 15 maja):

1) WBEMTEST nie działa na zdalnych połączeń podczas przechodzenia nieprawidłowych poświadczeń (nieprawidłowy domenę)

Jest to oczekiwane zachowanie, oczywiście

2) dla połączenia lokalnego WBEMTEST działa „tylko bez poświadczeń”

wygląda to może nie mieć t rickled się w dokumentacji ManagementScope i ConnectionOptions, ale:

Nie można zmienić poświadczenia podczas podłączania do komputera lokalnego.
(MSDN: WMI Tasks: Connecting to the WMI Service)

Uwagi
Nie określić strUser, strPassword lub strAuthority podczas wykonywania połączenia do lokalnej przestrzeni nazw.
(MSDN: IWbemLocator::ConnectServer)


Odnośnie oryginalnego pytanie, bo powiedział, że WBEMTEST zachowuje się zgodnie z oczekiwaniami, wiemy, że WMI jest „praca” i nie jest to krawędź przypadek problem podobny cel maszyna została skonfigurowana do akceptowania połączeń anonimowych.

Jedna z możliwości polega na tym, że połączenie C# WMI korzysta z poświadczeń użytkownika wywołującego, a nie określonych (nieważnych) poświadczeń. Spróbuj uruchomić ten sam kod, ale tym razem jako użytkownik na komputerze lokalnym, którego konto nie istnieje na komputerze zdalnym.Jeśli to nie powiedzie się, oznacza to, że zamiast żądanych referencji zostały użyte poświadczenia osoby dzwoniącej. Które, gdyby wystąpiło, sugerowałoby błąd w implementacji wywołań podszywania ręcznie określonych poświadczeń podczas łączenia się ze zdalnym komputerem.