Installieren Sie einen Windows-Dienst über eine Windows-Eingabeaufforderung?

323

Ich möchte einen Windows-Dienst über eine Windows-Eingabeaufforderung installieren (nicht über die Visual Studio-Eingabeaufforderung).

Wie mache ich das?

Vikash Pandey
quelle

Antworten:

516

Navigieren Sie zu der Datei installutil.exe in Ihrem .net-Ordner (für .net 4 ist dies beispielsweise C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319) und installieren Sie Ihren Dienst wie folgt:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe" "c:\myservice.exe"
hcb
quelle
35
Wenn es sich um den x64-kompilierten Dienst handelt, verwenden Sie "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ installutil.exe".
nme
20
Ich bekomme einen seltsamen Fehler. Kein öffentliches Installationsprogramm mit dem RunInstallerAttribute. Das Attribut "Ja" wurde in der EXE-Assembly gefunden. Entfernen Sie die InstallState-Datei, da keine Installationsprogramme vorhanden sind
Nick
1
Hallo, ich habe diese Lösung ausprobiert, aber es gibt eine Ausnahme als "... Datei nicht gefunden oder eine ihrer Abhängigkeiten". Bitte helfen Sie.
ShaileshDev
Für alle mit dem gleichen Problem wie alle diese und mich: Sie müssen nicht mehr den ganzen Weg hineinstecken. Eine einfache installutil.exe "C: \ YourProject.exe" reicht aus.
Cataklysim
1
@Cataklysim Sie müssen den vollständigen Pfad verwenden, es sei denn, Sie haben ihn der Umgebungsvariablen path hinzugefügt.
BluE
211

Mit dem Befehl SC Create ist nichts falsch. Sie müssen nur die richtigen Argumente kennen:

SC CREATE "MySVC" binpath= "D:\Me\Services\MySVC\MySVC.exe"
Sid
quelle
27
Dies ist die einzige Antwort, die auf die offizielle Methode zum Installieren / Ändern / Löschen eines Dienstes verweist . Darüber hinaus hängt dies nicht von der Installation von .NET Framework ab und funktioniert mit jeder Art von Datei, nicht nur mit .NET-Binärdateien.
Alejandro
7
Ja, deshalb habe ich diesen Ansatz geliebt und ihn immer empfohlen, da die ganze Arbeit in der Exe erledigt werden muss, die zu jeder .net fw-Version gehören kann.
Sid
1
Beachten Sie, dass dieser Befehl nur für Windows Server (und einige ältere Windows-Versionen) verfügbar ist. Win 10 hat auch einen scBefehl, aber es ist etwas anderes, kann nicht zum Registrieren von Diensten verwendet werden.
Kapitän Dashenka
4
Beachten Sie, dass das Leerzeichen nach "binpath =" unbedingt erforderlich ist. @ ParamvirSinghKarwal
Urk
1
Wenn Sie Powershell zum Ausführen dieses Befehls verwenden, beachten Sie, dass SC ein Alias ​​für Set-Content ist. Das Schreiben von SC.exe wird das beheben.
Jesper Riemer Andersen
84

Wenn der Name des Verzeichnisses ein Leerzeichen wie enthält c:\program files\abc 123, müssen Sie den Pfad in doppelte Anführungszeichen setzen.

installutil.exe "c:\program files\abc 123\myservice.exe"

Installieren Sie den Windows-Dienst über die Eingabeaufforderung

Es macht die Sache viel einfacher, wenn Sie eine Fledermausdatei wie folgt einrichten:

Um beispielsweise einen Dienst zu installieren, erstellen Sie eine "myserviceinstaller.bat" und " Als Administrator ausführen ".

@echo off
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
installutil.exe "C:\Services\myservice.exe"

if ERRORLEVEL 1 goto error
exit
:error
echo There was a problem
pause

um den Dienst zu deinstallieren,

Fügen Sie einfach ein -u zum Befehl installutil hinzu.

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe -u "C:\Services\myservice.exe"
Dhanuka777
quelle
16

Führen Sie folgende Schritte aus:

  1. Starten Sie die Eingabeaufforderung (CMD) mit Administratorrechten.
  2. Art c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe [your windows service path to exe]
  3. Drücken Sie returnund das ist es!

Es ist wichtig, mit Administratorrechten zu öffnen, da sonst möglicherweise Fehler auftreten, die keinen Sinn ergeben. Wenn Sie welche erhalten, überprüfen Sie, ob Sie sie zuerst mit Administratorrechten geöffnet haben!

Um mit Administratorrechten zu öffnen , klicken Sie mit der rechten Maustaste auf "Eingabeaufforderung" und wählen Sie "Als Administrator ausführen".

Quelle: http://coderamblings.wordpress.com/2012/07/24/how-to-install-a-windows-service-using-the-command-prompt/

Base33
quelle
10

Installationsservice: -

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" 
"C:\Services\myservice.exe"

Sevice deinstallieren: -

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" -u "C:\Services\myservice.Service.exe"
Kaushik AppzyTech
quelle
6

Ich muss noch einen Punkt in diesen Thread einfügen. Um die 64-bitVersion von Assemblys zu installieren / deinstallieren, sollte die 64-bitVersion des Tools verwendet werden. Um einen Dienst zu installieren, sollte der Befehl lauten:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe"
"C:\YourFolder\YourService.exe"

und um den Befehl zu deinstallieren, sollte sein:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe" -u
"C:\YourFolder\YourService.exe"
MKR
quelle
4

Erstellen Sie eine *.batDatei neben Ihrer Windows - Service - exeDatei für die Installation mit folgendem Zusammenhang:

CLS
ECHO Installing My Windows Service 

START %windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe "%~d0%~p0\YourWindowsServiceExeName.exe"

Erstellen Sie eine *.batDatei neben Ihrer Windows - Service - exeDatei für die Deinstallation mit folgendem Zusammenhang:

CLS
ECHO Uninstalling My Windows Service 

START %windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe -u "%~d0%~p0\YourWindowsServiceExeName.exe"

Führen Sie jede batDatei als Administrator aus , um Ihren Windows-Dienst zu installieren oder zu deinstallieren.

Mohammad Dayyan
quelle
2
  1. Führen Sie die Windows-Eingabeaufforderung als Administrator aus
  2. Fügen Sie diesen Code ein: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\um zum Ordner zu gelangen
  3. Bearbeiten und führen Sie dies auch aus: installutil C:\ProjectFolder\bin\Debug\MyProject.exe

Hinweis: So deinstallieren Sie:installutil /u C:\ProjectFolder\bin\Debug\MyProject.exe

Oguzhan KIRCALI
quelle
2

Öffnen Sie Visual Studio und wählen Sie ein neues Projekt aus, indem Sie die Windows ServiceVorlage auf der Windows DesktopRegisterkarte auswählen . Dann kopieren Sie den folgenden Code in Ihre Datei service_name.cs.

using System.Diagnostics;
using System.ServiceProcess;
namespace TimerService
{
    public partial class Timer_Service : ServiceBase
    {
        public Timer_Service()
        {
            InitializeComponent();
        }
        static void Main()
        {
            if (System.Diagnostics.Debugger.IsAttached)
            {
                Timer_Service service = new Timer_Service();
                service.OnStart(null);
            }
            else
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[]
                {
                    new Timer_Service()
                };
                ServiceBase.Run(ServicesToRun);
            }
        }
        protected override void OnStart(string[] args)
        {
            EventLog.WriteEvent("Timer_Service", new EventInstance(0, 0, EventLogEntryType.Information), new string[] { "Service start successfully." });
        }
        protected override void OnStop()
        {            
            EventLog.WriteEvent("Timer_Service", new EventInstance(0, 0, EventLogEntryType.Information), new string[] { "Service stop successfully." });
        }
    }
}

Klicken Sie mit der rechten Maustaste auf die Datei service_name.cs und öffnen Sie den Designer des Dienstes. als Rechtsklick und auswählen Add Installer. Klicken Sie dann mit der rechten Maustaste auf serviceProcessInstaller1und ändern Sie den Eigenschaftswert von Accountvon Usernach Local System.

static void mainMethode aus Program.csDatei entfernen . Dann speichern und erstellen Sie Ihr Projekt.

HINWEIS: Gehen Sie zum bin\DdebugOrdner Ihres Projektordners. Dann öffnen Sie die Eigenschaften Ihrer service_name.exeDatei. Dann gehe zur CompatibilityRegisterkarte. Dann klicken Sie auf Change Settings For All Users.

Option auswählen Run this program as an administrator.

Jetzt müssen Sie CommandPromt als Administrator öffnen. Legen Sie nach dem Öffnen das Verzeichnis fest, in dem sich Ihre InstallUtil.exeDatei befindet. zum Beispiel : C:\Windows\Microsoft.NET\Framework64\v4.0.30319. Schreiben Sie nun den folgenden Befehl:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe -i C:\TimerService\TimerService\bin\Debug\TimerService.exe

Hinweis: -i dient zur Installation des Dienstes und -u zur Deinstallation.

Nach -i legen Sie den Schreibpfad fest, in dem Sie Ihren Dienst installieren möchten.

Schreiben Sie nun den Befehl in CommandPromt wie folgt:

C:\TimerService\TimerService\bin\Debug>net start service_name

Hinweis: Verwenden Sie diese stopOption, um den Dienst zu beenden.

Jetzt öffne ViewEventLog.exe. Wählen Sie Windows-Protokolle> Anwendung. Dort können Sie das Protokoll Ihres Dienstes überprüfen, indem Sie den Dienst starten und stoppen.

Karan Raiyani
quelle
2

Wenn Sie Powershell verwenden und den .NET-Dienst installieren möchten, können Sie das Install-Service- Modul verwenden. Es ist ein Wrapper für das InstalUtil-Tool.

Es werden 3 Befehle angezeigt

  • Install-Service -  Ruft den Befehl InstallUtil.exe pathToExecutable auf
  • Install-ServiceIfNotInstalled - Zuerst wird überprüft, ob der Dienst installiert ist, wenn die Methode Install-Service nicht ausgeführt wird
  • Deinstallationsdienst - Der Dienst wird deinstalliert. ServiceName des Pfads zur ausführbaren Datei kann verwendet werden.

Der Code zu diesem Modul kann hier eingesehen werden

Pawel Wujczyk
quelle
1
  1. Starten Sie die Eingabeaufforderung (CMD) mit Administratorrechten.
  2. Geben Sie c: \ windows \ microsoft.net \ framework \ v4.0.30319 \ installutil.exe ein [Ihr Windows-Dienstpfad zu exe]
  3. Drücken Sie die Eingabetaste
welcher Server
quelle
1

den folgenden Code, installieren und deinstallieren Sie den Dienst,

Öffnen Sie die Eingabeaufforderung, führen Sie das Programm als Administrator aus, lösen Sie den folgenden Befehl aus und drücken Sie die Eingabetaste.

Syntax

Installieren

C:\windows\microsoft.net\framework\v4.0.30319>InstallUtil.exe + Your copied path + \your service name + .exe

Beispiel: Unser Pfad InstallUtil.exe C: \ MyFirstService \ bin \ Debug \ MyFirstService.exe

Zum Deinstallieren

 C:\windows\microsoft.net\framework\v4.0.30319>InstallUtil.exe -u + Your copied path + \your service name + .exe

Beispiel: Unser Pfad InstallUtil.exe -u C: \ MyFirstService \ bin \ Debug \ MyFirstService.exe

Weitere Hilfe finden Sie unter folgendem Link: Beispielprogramm

Joji Thomas Eapen
quelle
1

Befolgen Sie die Schritte zum Bereitstellen des Windows-Dienstes. Verlieren Sie keine Zeit

1- Führen Sie die Eingabeaufforderung mit dem Administratorrecht aus

2- Informieren Sie sich beim Kompilieren in Ihrer IDE über den Freigabemodus

3- Geben Sie Ihrem Projektinstallationsprogramm in der Entwurfsansicht einen Typ

4- Wählen Sie den Authentifizierungstyp entsprechend dem Fall aus

5- Versichern Sie sich über Software-Abhängigkeiten: Wenn Sie ein Zertifikat verwenden, installieren Sie es korrekt

6- Gehen Sie auf Ihre Konsole und schreiben Sie Folgendes:

C:\Windows\Microsoft.NET\Framework\yourRecentVersion\installutil.exe c:\yourservice.exe

Vor dem exe-Pfad, den -i c:\Sie -uzur Deinstallation verwenden können, befindet sich ein verstecktes -i-Argument

7- Sehen Sie sich Ihren EXE-Pfad als Protokolldatei an. Sie können die Ereignisanzeige verwenden, um die Funktion zu beobachten

Hamit YILDIRIM
quelle
1

Öffnen Sie die Entwickler-Eingabeaufforderung als Administrator und navigieren Sie zu

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

Verwenden Sie jetzt den Pfad, wo Sie sich .exebefinden

InstallUtil "D:\backup\WindowsService\WindowsService1\WindowsService1\obj\Debug\TestService.exe"
Arvind Chourasiya
quelle
0

Wenn Ihre Assembly-Version und Ihre Visual Studio-Projekt-Biuld-Einstellung auf Dot Net 2 oder 4 mit derselben Version installiert werden.

Installieren Sie den Dienst mit installutilderselben Version

wenn im Punktnetz eingebaut 4

Art c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe

wenn im Punktnetz eingebaut 2

Art c:\windows\microsoft.net\framework\v2.0.11319\installutil.exe

Säbel tabatabaee yazdi
quelle
0

1.Wählen Sie im Startmenü das Visual Studio-Verzeichnis und anschließend Developer Command Prompt for VS.

2.Die Eingabeaufforderung für Entwickler für Visual Studio wird angezeigt.

3.Greifen Sie auf das Verzeichnis zu, in dem sich die kompilierte ausführbare Datei Ihres Projekts befindet.

4. Führen Sie InstallUtil.exe an der Eingabeaufforderung mit der ausführbaren Datei Ihres Projekts als Parameter aus

AMIR2580
quelle
-1

Sie sollten die Eingabeaufforderung öffnen und zu gehen

C:\windows\microsoft.net\framework\v4.0.30319\InstallUtil.exe -i ".EXE file of window service"

Soft-Web-Experte
quelle
-1

Öffnen Sie die Eingabeaufforderung als Administrator und wechseln Sie zu Ihrem Ordner, in dem Sie .exesich befinden. ExeAls Dienst installieren

D:\YourFolderName\YourExeName /i

Zum Deinstallieren verwenden /u.

Dänischer Sulaiman
quelle