【问题标题】:Cannot find windows service (just installed)找不到windows服务(刚安装)
【发布时间】:2011-09-20 11:03:59
【问题描述】:

我刚刚使用VS 2010安装了一个windows服务,使用installutil.exe,cmd提示窗口说commit阶段成功完成,但是我在本地services文件夹中看不到windows服务。

我错过了什么?

我使用的是 Windows 7 和 VS 2010

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

FWIW...我在属性窗口(文件名值)中重命名了我的 service1.cs.. 但它仍然在服务浏览器中显示 service1。我最终也更改了后面代码中的值(自动生成的代码) this.serviceInstaller1.ServiceName = "service1";

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

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

据此本站Can't see windows service after installation

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

更新 (3)
日志文件说

没有公共安装程序 RunInstallerAttribute.Yes 属性 可以在C:..中找到。

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

我加了

[运行安装程序(真)]

到 ProjectInstaller.cs 文件,还是不行

有什么建议吗?

【问题讨论】:

  • 您是否刷新了服务文件夹视图?有时它不会立即出现。
  • @user788487:您将 ServiceInstaller 的 ServiceName 属性设置为什么?这就是它应该在下面列出的内容。
  • @Jackson,在那个名字下也找不到它。
  • 您传递给 installutil.exe 的路径是什么?您没有使用映射驱动器或类似的东西?

标签: c# visual-studio-2010 windows-7 .net-4.0 windows-services


【解决方案1】:

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

serviceInstaller.DisplayName = "Example service"

哇!

【讨论】:

    【解决方案2】:

    用 [RunInstaller(true)] 属性检查 Installer 派生类的构造函数中是否有类似的东西:

    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);
    }
    

    【讨论】:

    • 完美!解决了我在服务列表中看不到服务的问题:)
    【解决方案3】:

    将您添加 [RunInstaller(true)] 的类设为公开。

    【讨论】:

    • 我认为“没有具有 RunInstallerAttribute 的公共安装程序”的原因非常有限。您是否删除了安装程序并再次完成了该过程?听起来好像是第一次错过了什么。
    【解决方案4】:

    我刚刚遇到了这个问题,和你描述的完全一样。

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

    这可能不是您的问题,但在命令提示符下,我浏览到 .exe 所在的目录,键入 installutil 后跟一个空格,然后使用制表符循环以自动完成服务 exe 名称。

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

    很傻,但事情就是这样。

    将此信息留给后代,并希望它可以帮助其他人:-)

    【讨论】:

      【解决方案5】:

      这充其量只是半解决方案。

      我遇到了同样的问题,我已经尝试了上面提到的所有补救措施以及其他程序员的避风港。

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

      【讨论】:

        【解决方案6】:

        我正在针对我认为没有 .exe 扩展名的文件运行 installutil.exe。当我在文件浏览器中查看文件时,扩展名不可见。当我将 .exe 扩展名添加到服务文件名时,它运行顺利:-)。真可惜。

        【讨论】:

        • 欢迎来到 Stackoverflow。回答前请阅读常见问题解答。请在回答前仔细阅读问题..
        【解决方案7】:

        向设置项目添加自定义操作

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

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

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

        4.构建安装项目。

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-12
            • 2021-04-28
            • 1970-01-01
            • 1970-01-01
            • 2016-04-22
            • 2011-09-11
            • 1970-01-01
            相关资源
            最近更新 更多