Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

wie kann ich ein Java Programm als Dienst bei Windows 7/8 einrichten? Ich möchte einen Commandline Aufruf wie


java -jar myJar.jar <Parameter>

als Dienst beim Systemstart ausführen. Das Programm soll mit eingeschränkten Rechten laufen, so dass es einen Shell-Zugriff hat und in einem eigenen Userverzeichnis liegt (die Jar kann dann ebenfalls in dem Userverzeichnis liegen).

Unter Linux lade ich mittels curl die Jar und kann über whereis prüfen wo Java liegt. Ich möchte eine Batch Datei erstellen, die mir die komplette Installation vornimmt. Ich weiss, dass Dienste mittels net start/stop gestartet werden können, aber wie richte ich das Command am besten ein?

Danke

Geschrieben

Super danke, ich habe jetzt als ersten Schritt ein PowerShell Script geschrieben, dass mir einen User (local) im System anlegt unter dem dann der Dienst laufen soll:


# Parameter sind Benutzername und Jenkins Secret Key

Param([Parameter(Mandatory=$true)][string]$Username, [Parameter(Mandatory=$true)][string]$Secret)



# Prüfung, ob der User aktuell Administratorrechte besitzt

$usercontext = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()            

$IsAdmin = $usercontext.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")                               

if (-not($IsAdmin))            

{            

	Write-Error("Administratorrechte sind notwendig")            

}             


# Prüfe ob Java installiert ist

$javafound = $false

$keys      = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

$items     = $keys | Foreach-Object { Get-ItemProperty $_.PsPath }

foreach($item in $items)

{

	if ($item.DisplayName -like "Java *")

	{

		$javafound = $true

		break

	}

}

if (!$javafound)

{

	Write-Error("Java wurde nicht gefunden, bitte installieren!")

}



# Serverobjekt erzeugen, um Zugriff auf den lokalen Rechner zu erhalten

[ADSI]$server = "WinNT://$(get-content env:computername)"


# erzeuge User mit zufälligem Passwort, wobei der User das Passwort nicht ändern kann und es nicht abläuft,

# prüfe ob User erst existiert

$localUsers = $server.Children | where {$_.SchemaClassName -eq 'user'} | foreach {$_.name[0].ToString()}

foreach($item in $localUsers)

{

	if ( !$Username.CompareTo($item) )

	{

		Write-Error("Benutzername $Username existiert bereits!")

	}

}


$chars = [Char[]]"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@$%&/()=?"

$pass  = ($chars | Get-Random -Count 16) -join ""


#$userhome = "\\$(get-content env:computername)\Home$\$Username"

$user     = $server.Create( "User", $Username)

$user.Put( "Description", "Jenkins Slave User Account" )

$user.SetPassword( $pass )

$user.UserFlags = 64 + 65536

$user.SetInfo()



# Download des Jenkins Slaves

#$file = "c:\slave.jar"

#$webclient = New-Object System.Net.WebClient

#$webclient.DownloadFile( "https://server/jenkins/jnlpJars/slave.jar", $file )

Mein Problem ist jetzt, dass mir der User im System zwar erzeugt wird, aber ich den Jenkins Client gerne in dem Homeverzeichnis speichern möchte. Die Frage wäre nun, wie lege ich das Homeverzeichnis passend an, ich habe nämlich keine Möglichkeit gefunden, herauszubekommen, wo die Userhomeverzeichnisse liegen (hart c:\Users einzutragen, möchte ich nicht). Dann wäre die Frage, ob das Script so in Ordnung ist, bzw wo kann ich es besser machen (ist mein erstes PowerShell Script). Wie kann ich dann den Dienststeuerungsmanager aus dem PowerShell Script verwenden bzw. wie muss das konkret aussehen?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...