Zum Inhalt springen

CLI Aufruf als Dienst


flashpixx

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...