2010-12-15 4 views
15

Czy podczas instalowania usługi Windows istnieje możliwość instalacji przez użytkownika określonego konta użytkownika i konta komputera, na przykład LocalSystem? Widzę, jak to zrobić w czasie kompilacji za pomocą właściwości instalatora serwisowego, ale nie podczas instalacji.Usługa systemu Windows Wybierz konto użytkownika lub systemowe podczas instalacji

+2

z czym instalujesz? MSI's? Wiersz poleceń? –

+0

Prawdopodobnie użyję niestandardowego instalatora i wywołaję installutil. Widziałem przypadki, w których to się stało, ale nie jestem pewien, jak to działa. – AdamC

Odpowiedz

27

@Doobi, @Eric, z mojego doświadczenia (Win7Home 64-bit, VS2010Express, a nie w domenie)

processInstaller.Account = ServiceAccount.LocalService; 
processInstaller.Username = null; 
processInstaller.Password = null; 

zainstaluje usługę jako usługa lokalna bez pytania o hasło.

Aby zainstalować usługę jako lokalnego konta użytkownika (i zapewniają pytanie o hasło, aby umożliwić użytkownikowi dostarczyć poświadczenia) musiałem użyć:

this.serviceProcessInstaller.Account =System.ServiceProcess.ServiceAccount.User; 
this.serviceProcessInstaller.Password = null; 
this.serviceProcessInstaller.Username = null; 

Ważnym krokiem musiałem podjąć, aby uzyskać Zainstalowana usługa polega na umieszczeniu nazwy komputera w oknie dialogowym poświadczeń, tj. MYPC\dave zamiast dave. Byłem zaskoczony, że będę musiał to zrobić, ponieważ nie jest to domena. Dodałem ten komentarz, ponieważ żadne inne posty, które widziałem o tej wzmiance, nie muszą poprzedzać nazwy użytkownika nazwą komputera.

+2

Dzięki informacjom nazwa_komputera \ nazwa_użytkownika poprawiono mój numer – Martin

+0

nazwy domeny przed nazwą użytkownika. Naprawiono również problem. Dzięki! –

6

Tak, jest na instalatorze procesu. Myślę, że w nowszych frameworkach jest to widoczna właściwość, jeśli wybierzesz instalator procesu na powierzchni projektowej. Ostatni raz to zrobiłem (.NET 2.0) trzeba dodać coś podobnego do tego w pliku * .designer.cs:

processInstaller.Account = ServiceAccount.LocalService; 
      processInstaller.Username = null; 
      processInstaller.Password = null; 
+0

Więc w jaki sposób "pozwala użytkownikowi instalować wybrać między określonym kontem użytkownika a kontem komputera, na przykład LocalSystem" –

+0

Ponieważ jeśli ustawisz go na "ServiceAccount.User" i nie określisz poświadczeń, monituje użytkownika o poświadczenia podczas instalacji. – Doobi

+1

+1 To całkiem fajne. –

2

Dodając do poprzednich odpowiedzi, nie zapomnij dodać nazwy komputera do nazwy użytkownika podczas wpisywania hasła "Nazwa użytkownika". W przeciwnym razie usługa nie zaakceptuje poświadczeń, mimo że podasz poprawną nazwę użytkownika i pwd. Zostanie wyświetlony monit o wprowadzenie danych uwierzytelniających. Zajęło mi to jeden dzień, aby to rozgryźć. Dzięki Badgerspot!