找不到Windows服务(刚安装)

15

我刚刚使用VS 2010安装了一个Windows服务,使用installutil.exe,命令提示符窗口显示提交阶段成功完成,但是我在本地服务文件夹中找不到Windows服务。

我错过了什么?

我正在使用Windows 7和VS 2010。

更新:
我卸载了服务(名为service1),将名称更改为有意义的内容,安装了该服务(与上述过程相同),但仍然无法在服务浏览器中找到它。

顺便说一下...我在属性窗口中重命名了我的service1.cs(文件名值)..但是在服务浏览器中仍然显示为service1。最终我还是在代码后台中更改了值(自动生成的代码)this.serviceInstaller1.ServiceName = "service1";

更新(2)
我创建了一个虚拟的Windows服务,并成功安装了它(提示我输入域登录ID和密码),我能够在服务浏览器中看到它。

然而,我无法在服务浏览器中看到实际的Windows服务(与我的项目相关)。显然,我有权限,因为我可以安装虚拟服务。

根据这个网站安装后看不到Windows服务

我无法在“HKLM\System\CurrentControlSet\Services”路径下的注册表中看到该服务。

更新(3)
日志文件显示:

在 C:.. 中找不到带有 RunInstallerAttribute.Yes 属性的公共安装程序。

然而,我在项目解决方案中有一个 ProjectInstaller.cs 文件。

我已经在 ProjectInstaller.cs 文件中添加了

[RunInstaller(true)]

但仍然没有成功。

有任何建议吗?


@user788487:你将ServiceInstaller的ServiceName属性设置为什么了?它应该在那里列出。 - Jackson Pope
@Jackson,我也找不到它的名字。 - user788487
你传递给 installutil.exe 的路径是什么?你没有使用映射驱动器或类似的东西吗? - Chris O
好的,我成功安装了虚拟服务...所以我不认为是安装过程的问题。但是回答你的问题,在命令提示符中,我会输入“cd C:\Windows\Microsoft.NET\Framework\v4.0.30319”,然后输入“installutil <windowsservice.exe>”。 - user788487
1
请尝试访问 https://dev59.com/k3I_5IYBdhLWcg3wBuRs。 - Benhar Upasana
显示剩余6条评论
8个回答

9

还要记得在查找服务之前检查您给服务命名的名称。我从网络上复制粘贴了一些代码,忘记在代码中更改服务名称,所以我当然找不到它...

serviceInstaller.DisplayName = "Example service"

抱歉!

5

请检查安装程序派生类的构造函数是否具有 [RunInstaller(true)] 属性,如下所示:

public ServiceSetup()
{
    Installers.Clear();

    ServiceInstaller serviceInstaller = new ServiceInstaller();
    // serviceInstaller.Description = // FIXME:
    // serviceInstaller.ServiceName = // FIXME:
    // serviceInstaller.DisplayName = // FIXME:
    serviceInstaller.StartType = ServiceStartMode.Automatic;
    Installers.Add(serviceInstaller);

    ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
    serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
    serviceProcessInstaller.Username = null;
    serviceProcessInstaller.Password = null;
    Installers.Add(serviceProcessInstaller);
}

完美!解决了我在服务列表中看不到该服务的问题 :) - nover

2
让您添加了 [RunInstaller(true)] 的类变为公共类。

我认为“没有带有RunInstallerAttribute的公共安装程序”的原因相当有限。您是否已经删除了安装程序并再次执行了该过程?听起来第一次可能会错过某些步骤。 - Dave Ziegler

1

我刚刚遇到了你描述的这个问题。

我愚蠢地对生成的myservice.vshost.exe文件运行了installutil。

这可能不是你的问题,但在命令提示符中,我浏览到.exe文件所在的目录,键入installutil,然后使用tab键循环自动完成服务exe名称。

我找到的文件以“myservice”开头,以“.exe”结尾,然后让它运行。

很傻,但就是这样发生了。

留下这条消息,希望能为后人提供帮助 :-)


0

听起来很奇怪,但请确保您要安装的service.exe文件是最新版本。我担心您正在尝试部署调试文件夹中的文件,但您确实进行了更改并以发布模式重新构建了服务项目。


0

如何向安装程序项目添加自定义操作

1.在“解决方案资源管理器”中,右键单击安装程序项目,指向“查看”,然后选择“自定义操作”。此时将会出现“自定义操作编辑器”。

2.在“自定义操作编辑器”中,右键单击“自定义操作”节点,然后选择“添加自定义操作”。此时将会出现“项目中的选择项”对话框。

3.在列表框中双击应用程序文件夹以打开它,选择“MyNewService(Active)”中的主要输出,并单击“确定”。主要输出将被添加到所有四个节点的自定义操作——安装、提交、回滚和卸载中。

4.构建安装程序项目。


0
我正在对一个没有 .exe 扩展名的文件运行 installutil.exe。当我在文件浏览器中查看文件时,扩展名是不可见的。当我将 .exe 扩展名添加到服务文件名中时,它顺利运行 :-)。真是个倒霉蛋。

欢迎来到Stackoverflow。在回答问题之前请阅读FAQ。请仔细阅读问题后再回答。 - coder

0

这最多只是半个解决方案。

我曾经遇到同样的问题,尝试了上述所有方法以及其他程序员提供的建议。

我将账户类型更改为LocalService,现在它可以正常工作了。这可能只是一个临时解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接