Start als Dienst

  • Hi , wollte schon lange mal ein Programm als Dienst starten, aber ohne Extra Tools wie z.B. runas, Invoker usw...

    Mit dem hier klappt es einfach nicht, der Dienst wird einfach nicht gestartet.

    Deshalb hab ich mir das hier einfallen lassen, ist zwar ziemlich einfach, aber klappt bestens.

    Es wurde getestet auf Xp Pro, Win7 Starter, Win7 Ultimate 32 & 64 Bit.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <file.au3>
    Global $szDrive, $szDir, $szFName, $szExt
    $path = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt)
    $sName = $path[3]

    [/autoit] [autoit][/autoit] [autoit]

    If $CMDLINE[0] And $CMDLINE[1] = "-s" Then
    _service()
    Else
    MsgBox(0, "", "Kein Service")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func _service()
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\" & $sName, "DisplayName", "REG_SZ", $sName)
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\" & $sName, "ObjectName", "REG_SZ", "LocalSystem")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\" & $sName, "ErrorControl", "REG_DWORD", "1")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\" & $sName, "Start", "REG_DWORD", "2")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\" & $sName, "Type", "REG_DWORD", "16")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\" & $sName, "ImagePath", "REG_EXPAND_SZ", $path[0])
    MsgBox(0, $path[0], "Service Installiert!")
    EndFunc ;==>_service

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Ab hier kommt der Rest vom Script

    [/autoit]

    Vieleicht kann es wer gebrauchen.