Ich möchte einen Windows-Dienst mit einer Windows-Eingabeaufforderung (nicht der Visual Studio-Eingabeaufforderung) installieren.
Wie mache ich das?
Navigieren Sie zur Datei installutil.exe in Ihrem .net-Ordner (für .net 4 ist dies beispielsweise C:\Windows\Microsoft.NET\Framework\v4.0.30319) und verwenden Sie es, um Ihren Dienst wie folgt zu installieren:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe" "c:\myservice.exe"
Mit SC Create command..__ nichts falsch, Sie müssen nur die richtigen Argumente kennen:
SC CREATE "MySVC" binpath= “D:\Me\Services\MySVC\MySVC.exe"
Wenn der Name des Verzeichnisses ein Leerzeichen wie c:\program files\abc 123
enthält, müssen Sie den Pfad in doppelte Anführungszeichen setzen.
installutil.exe "c:\program files\abc 123\myservice.exe"
Es macht die Sache viel einfacher, wenn Sie eine bat-Datei wie folgt einrichten:
z.B. Um einen Dienst zu installieren, erstellen Sie "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
dienst deinstallieren,
Fügen Sie einfach den Befehl -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"
Führen Sie Folgendes aus:
c:\windows\Microsoft.net\framework\v4.0.30319\installutil.exe [your windows service path to exe]
Es ist wichtig, mit Administratorrechten zu öffnen, da sonst möglicherweise Fehler auftreten, die keinen Sinn ergeben. Wenn du welche bekommst, überprüfe zuerst, ob du sie mit Administratorrechten geöffnet hast!
Zum Öffnen mit Administratorrechten klicken Sie mit der rechten Maustaste auf "Eingabeaufforderung" und wählen Sie "Als Administrator ausführen".
Install Service: -
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe"
"C:\Services\myservice.exe"
Deinstallation von Sevice: -
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" -u "C:\Services\myservice.Service.exe"
Ich muss noch einen Punkt in diesem Thread hinzufügen. Um 64-Bit-Versionen von Baugruppen zu installieren/deinstallieren, sollte die 64-Bit-Version 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 den Befehl zu deinstallieren sollte sein:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe" -u
"C:\YourFolder\YourService.exe"
Wenn Sie Powershell verwenden und den .NET-Dienst installieren möchten, können Sie das Modul Install-Service verwenden. Es ist ein Wrapper für das InstalUtil-Tool.
Es macht 3 Befehle verfügbar
Code zu diesem Modul kann angesehen werden hier
Erstellen Sie eine *.bat
-Datei neben Ihrem Windows-Dienst exe
-Datei , um mit dem folgenden Kontext zu installieren:
CLS
ECHO Installing My Windows Service
START %windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe "%~d0%~p0\YourWindowsServiceExeName.exe"
Erstellen Sie eine *.bat
-Datei neben Ihrem Windows-Dienst exe
-Datei , um mit dem folgenden Kontext zu deinstallieren:
CLS
ECHO Uninstalling My Windows Service
START %windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe -u "%~d0%~p0\YourWindowsServiceExeName.exe"
Führen Sie die bat
-Datei als Admin aus, um den Windows-Dienst zu installieren oder zu deinstallieren.
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
, um zum Ordner zu gelangeninstallutil C:\ProjectFolder\bin\Debug\MyProject.exe
Hinweis: Deinstallation: installutil /u C:\ProjectFolder\bin\Debug\MyProject.exe
Befolgen Sie beim Bereitstellen des Windows-Dienstes die folgenden Schritte, ohne Zeit zu verlieren
1- Führen Sie die Eingabeaufforderung des Administrators aus
2- Informieren Sie sich beim Kompilieren in Ihrer IDE über den Release-Modus
3- Geben Sie Ihrem Projektinstallationsprogramm in der Entwurfsansicht einen Typ
4- Wählen Sie den Authentifizierungstyp gemäß case
5- Informationen zu Softwareabhängigkeiten: Wenn Sie ein Zertifikat verwenden, installieren Sie es ordnungsgemäß
6- Gehen Sie zu Ihrer Konsole und schreiben Sie Folgendes:
C:\Windows\Microsoft.NET\Framework\yourRecentVersion\installutil.exe c:\yourservice.exe
vor dem exe-Pfad -i c:\
befindet sich ein verstecktes -i-Argument. Sie können -u
zum Deinstallieren verwenden
7- Sehen Sie sich Ihren EXE-Pfad an, um eine Protokolldatei zu erhalten. Sie können die Ereignisanzeige verwenden, um in der Funktion zu beachten
im folgenden Code installieren und deinstallieren Sie den Dienst.
Öffnen Sie die Eingabeaufforderung und führen Sie das Programm als Administrator aus, geben Sie den folgenden Befehl ein 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
zB: Unser Pfad InstallUtil.exe C:\MyFirstService\bin\Debug\MyFirstService.exe
Deinstallieren
C:\windows\Microsoft.net\framework\v4.0.30319>InstallUtil.exe -u + Your copied path + \your service name + .exe
zB: Unser Pfad InstallUtil.exe -u C:\MyFirstService\bin\Debug\MyFirstService.exe
weitere Hilfe finden Sie unter folgendem Link: Beispielprogramm
wenn Ihre Assembly-Version und Ihr Visual Studio-Projekt Biuld auf dot net 2 oder 4 mit derselben Version installiert werden.
installationsdienst mit installutil
derselben Version
wenn in dot net 4 eingebaut
Typ c:\windows\Microsoft.net\framework\v4.0.30319\installutil.exe
wenn in dot net 2 eingebaut
Typ c:\windows\Microsoft.net\framework\v2.0.11319\installutil.exe
Öffnen Sie Visual Studio und wählen Sie neues Projekt aus, indem Sie auf der Registerkarte Windows Service
die Vorlage Windows Desktop
auswählen. Kopieren Sie dann den folgenden Code in Ihre service_name.cs-Datei.
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. Klicken Sie mit der rechten Maustaste und wählen Sie Add Installer
. Klicken Sie dann mit der rechten Maustaste auf serviceProcessInstaller1
und ändern Sie den Eigenschaftswert von Account
von User
in Local System
.
Entfernen Sie die static void main
-Methode aus der Program.cs
-Datei . Dann speichern und erstellen Sie Ihr Projekt.
HINWEIS: goto bin\Ddebug
Ordner Ihres Projektordners. Öffnen Sie dann die Eigenschaften Ihrer service_name.exe
-Datei. Dann gehe zum Compatibility
Tab. Dann klicken Sie auf Change Settings For All Users
.
Wählen Sie die Option Run this program as an administrator
.
Nun müssen Sie CommandPromt als Administrator öffnen. Nach dem Öffnen legen Sie das Verzeichnis an dem Ort fest, an dem sich Ihre InstallUtil.exe
-Datei befindet. Beispiel: C:\Windows\Microsoft.NET\Framework64\v4.0.30319
.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe -i C:\TimerService\TimerService\bin\Debug\TimerService.exe
Hinweis: -i ist für die Installation des Dienstes und -u für die Deinstallation.
nachdem -i den Schreibpfad für den Pfad festgelegt hat, in den 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 stop
, um den Dienst zu beenden.
Öffnen Sie jetzt 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.