.NET-Dienste unter Windows2000

Nun frickel ich hier schon geraume Zeit an einen Dienst rum, welcher verschiedene Dienste sammelt und an eine MySQL-Datenbank schicken möchte.
Entwickelt habe ich den Dienst anfangs unter Windows XP Prof, danach unter Windows Vista Ultimate.
Dort hatte ich den Dienst auch immer Testweise Installiert.
Auf den Kunden-Rechnern lief bis jetzt Windows Server 2003 oder 2008 – Installation lief immer ohne Probleme.
Heute Stand ich dann vor dem Problem, das der Dienst auf ein Windows2000 Server installiert werden sollte (Ja – .NET 2.0 funktioniert auch unter Windows 2000 🙂 ).

Leider Funktionierte die Installation dort nicht wie gewünscht…

… Als Fehler bekam ich dann immer bei der Installation folgendes:

"Der Kontenname ist unzulässig oder nicht vorhanden, oder das Kennwort ist für den angegebenen Kontennamen ungültig"

JETZT weiss ich auch, das es es einiges unter Windows2000 nicht gibt, das es aber unter Windows>2000 doch gibt.
Dieser Fehler hier speziell trat auf, weil ich dem ServiceInstaller des Dienstes einen Benutzernamen mit gegeben habe.
Dies sieht so aus:

1
serviceProcessInstaller.Account = ServiceAccount.LocalService;

Nun – kurz gesagt: LocalService gibt es unter Windows2000 nicht.
Gottseidank gibt es noch den Enum LocalSystem, welche man hierfür verwenden kann.
Also habe ich meinen ServiceInstaller etwas angepasst:

1
2
3
4
5
6
7
8
9
RegistryKey Rkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
if(Rkey.GetValue("ProductName").ToString().Trim().Contains("2000"))
{
	serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
}
else
{
	serviceProcessInstaller.Account = ServiceAccount.LocalService;
}

Ok – ich gebe zu, das ist wirklich frickelig, aber es funktioniert.
Läuft der ServiceInstaller nun auf einem Windows 2000 (eben weil 2000 im namen), dann benutzt er LocalSystem als Dienst-Konto zum Installieren – andernfalls eben LocalService.

Tolle Sache das mal wieder… 🙂

2 Responses to .NET-Dienste unter Windows2000

  1.  

    Hey…
    Vielen Herzlichen Dank für diesen Beitrag.
    Ich habe schon alles tausend mal durchgesucht und alle .Net Frameworkabhängigkeiten auf 2.0 umgestellt aber irgendwie wollte das Setup nicht. Darauf muss man erstmal kommen, vorallem da es keine Ausgabe gibt.
    Mit deiner Änderung hat das Setup bombig funktioniert und arbeitet nun fleißig.

    Thx
    Gruß

  2. Gern geschehen 🙂
    Hat bei mir auch ne ganze weile gedauert bis ich das raus gefunden hatte 😉

     

leave your comment

*

Unterstütze den Frickelblog!