如何在没有InstallUtil.exe vb.net的情况下安装.NET Windows服务

时间:2012-01-30 19:46:57

标签: .net vb.net service windows-services installutil

我在vb.net中创建了一个Windows服务。无论如何我可以为它创建一个不需要使用installutil的安装吗?

3 个答案:

答案 0 :(得分:9)

Installutil是必要的,但为了简化操作,您可以创建一个安装项目,这样您只需运行.msi即可安装该服务。 (这使用了引擎盖下的installutil,但它大大简化了安装。)

这里有一个演练:http://support.microsoft.com/kb/816169

另一个在这里:http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx

两者之间的主要区别在于样本中的代码量。他们都走了同样的过程。

链接的文章很旧,但仍适用于VS2010。我上周使用了第二篇文章来介绍VS2010服务的过程。

答案 1 :(得分:4)

为什么要避免使用installutils?

您可以尝试使用sc命令,如sc create ...

编辑:这是一个MSDN页面:http://support.microsoft.com/?kbid=251192

DESCRIPTION:
        Creates a service entry in the registry and Service Database.
USAGE:
        sc <server> create [service name] [binPath= ] <option1> <option2>...

OPTIONS:
NOTE: The option name includes the equal sign.
      A space is required between the equal sign and the value.
 type= <own|share|interact|kernel|filesys|rec>
       (default = own)
 start= <boot|system|auto|demand|disabled|delayed-auto>
       (default = demand)
 error= <normal|severe|critical|ignore>
       (default = normal)
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <Dependencies(separated by / (forward slash))>
 obj= <AccountName|ObjectName>
       (default = LocalSystem)
 DisplayName= <display name>
 password= <password>

答案 2 :(得分:2)

您可以随时使用注册表项 密钥位于HKLM\SYSTEM\CurrentControlSet\services

您创建的密钥名称是服务处理程序上服务的嵌入名称。以下值是相关的:

DisplayName =在服务管理器中显示的文本

ImagePath =服务可执行文件的FQ文件名

Start(DWORD)=启动类型(3 =自动启动)

DelayedAutoStart(DWORD)=(1 =延迟)

WOW64(DWORD)=(0 = 64位应用,1 = 32位应用)

ErrorControl(DWORD)= 0

ObjectName = {username}在(LocalSystem for system account)下运行

还有很多其他值,但这应该让你开始。