Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.