2009-12-16 4 views
10

Napisałem usługę, za pomocą której strona internetowa może wykonywać polecenie zdalnie za pomocą metody ExecuteCommand. Zauważyłem, że jeśli strona nie działa pod użytkownikiem, który jest administratorem na zdalnym komputerze, otrzymuję wyjątek odmowy zgody na próbę wykonania polecenia.uprawnienia servicecontroller

Klasa servicecontroller nie pozwala nawet określić żadnych parametrów uwierzytelniania. Czy to jest poprawne? Czy jest jakiś konkretny zestaw informacji, których potrzebuje użytkownik, a nie administrator, ponieważ nie chcę dodawać wszystkich użytkowników serwerów WWW w naszym klastrze jako lokalnych administratorów na komputerze usługi?

Odpowiedz

5

Będziesz musiał tymczasowo podszywać się pod administratora dla bieżącego wątku, a następnie powrócić. Wyszukaj numer WindowsIdentity.Impersonate() w witrynie MSDN.

ServiceController użyje głównej nazwy bieżącego wątku do wywołania rejestru i menedżera kontroli usług i musisz upewnić się, że jest ustawiony na administratora, jeśli chcesz manipulować usługami. Minusem jest to, że musisz przechowywać hasło gdzieś na koncie, upewnij się, że używasz SecureString i nie przechowuj hasła w postaci zwykłego tekstu.

+0

Jeśli to możliwe, sugeruję, aby użytkownik wprowadzał swoje hasło administratora przy każdym uruchomieniu polecenia. W ten sposób unikasz przechowywania. To może nie być możliwe w twoim przypadku. – John