C# installutil与windows服务一起安装,然后立即卸载自定义windows服务

C# installutil与windows服务一起安装,然后立即卸载自定义windows服务,c#,visual-studio,windows-services,installation,installutil,C#,Visual Studio,Windows Services,Installation,Installutil,我有一个用c#编写的自定义windows服务,需要安装和调试。当我使用 installutil "[path].exe" 从命令行,然后尝试搜索该服务,它不会出现在任何位置的已安装服务列表中。查看安装日志文件,我看到以下内容: Installing assembly 'myservice'. Affected parameters are: logtoconsole = assemblypath = mypath logfile = mylogfile

我有一个用c#编写的自定义windows服务,需要安装和调试。当我使用

installutil "[path].exe"
从命令行,然后尝试搜索该服务,它不会出现在任何位置的已安装服务列表中。查看安装日志文件,我看到以下内容:

Installing assembly 'myservice'.   
Affected parameters are:  
   logtoconsole =    
   assemblypath = mypath  
   logfile = mylogfile  
Installing service MyService  
Service MyService has been successfully installed.  
Creating EventLog source MyService in log Application...  
Committing assembly 'myservice'.  
Affected parameters are:  
   logtoconsole =   
   assemblypath = myservice  
   logfile = pathtoinstalllog  
Uninstalling assembly myservice  
Affected parameters are:  
   logtoconsole =   
   assemblypath = myservice   
   logfile = pathtoinstalllog  
Removing EventLog source myservice.  
Service myservice is being removed from the system...  
Service myservice was successfully removed from the system.  
Uninstalling assembly myservice'.  
Affected parameters are:    
   logtoconsole =   
   assemblypath = myservice  
   logfile = pathtoinstalllog  
Removing EventLog source myservice.  
Service myservice is being removed from the system...  
Service myservice was successfully removed from the system.
(名称path、myservice、pathtoinstalllog等代替公司详细信息)

不管怎样,从日志文件看,服务似乎正在安装,然后立即卸载


如果需要更多的代码或信息,请告诉我,并提前感谢。

根据我们的讨论总结一下

  • 对服务主输出(bin/debug/assembly.exe)使用“
    InstallUtil完整路径”。通常,如果出现错误,InstallUtil“执行回滚”(因此请注意错误)-看起来是这样,但您的日志没有说明-因此我猜您的“myservice”的路径是错误的(同时选择正确的InstallUtil版本、.NET framework和32/64)

  • 对于安全性/帐户问题-
    运行InstallUtil>(“以管理员身份运行”,命令提示符等)(如果需要进行其他调试,请尝试为服务帐户指定不同的用户/类型,检查安装程序类的详细信息,以及RunInstaller属性等)


希望这有帮助

您是否应该指定标志
-i
来告诉它安装
呢?日志文件中是否有错误???这是installlog文件中的完整日志。还要检查你的代码是否没有导致卸载哦,我想那是默认值。。无论哪种方式,它都没有改变任何内容:\n服务主输出(bin/debug/assembly.exe)的完整路径。通常,如果出现错误,它会“执行回滚”-看起来是这样,但您的日志没有显示-所以我猜您的“myservice”是错误路径或其他原因。在C#installer类中你有什么?您用来登录等的用户…不应该,但取决于您如何构建/设置。无论如何,对于帐户问题-“以管理员身份运行”(命令提示符等)和要使用的服务(直到您解决问题为止)-让它“弹出”并使用一些管理员帐户名-UNC路径“.\User”或其他名称。InstallUtil可能会出现很多问题(这是我发现的最安全的方法,但一旦您知道如何使用它),请使用正确的32/64版本(以及正确的InstallUtil.NET版本路径)等,并注意错误。最后一个问题-我正在使用系统用户提供服务。这样行吗?如果不行,我如何更改它?编辑:没关系,我在安装程序代码中找到了它。第一个问题仍然存在,但是lolyes,在安装程序中-
我不会使用'system'帐户(我猜你说的是LocalSystem)<代码>如果完成任务,首选项总是与“特权最低”的选项一起使用,通常是“ServiceAccount.LocalService”
。浏览一下“System.ServiceProcess.ServiceAccount”的描述,它会介绍其中的每一个。理想情况下,为了进行适当的安全设置(并能够在以后进行微管理和控制)
如果可以,请设置一个单独的用户(用于服务或类似服务的“类别”),并为其提供“刚好足够”的特权
。但这更多的是一个“安全”问题:)-或者这个链接