繁体   English   中英

使用AssemblyInstaller安装后找不到服务

Service not found after installing using AssemblyInstaller

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

语境

Windows 2008 64位。
我安装了充当安装程序的.NET服务。

背景

我正在使用以下代码(信誉:Marc Gravell)安装服务:

using (var inst = new AssemblyInstaller(typeof(MyNamespace.Program).Assembly, new string[] { })) {
    IDictionary state = new Hashtable();
    inst.UseNewContext = true;
    try {
    if (uninstall) {
        inst.Uninstall(state);
    } else {
        inst.Install(state);
        inst.Commit(state);
    }
    } catch {
    try {
        inst.Rollback(state);
    } catch { }
    throw;
    }
}

问题

一切正常,没有异常,但是在那之后,我尝试运行以下代码来启动刚刚安装的服务:

using (var sc = new ServiceController("the service's name"))
{
    sc.Start();
    sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(20));
}

我得到一个例外:

System.InvalidOperationException: Service [service name goes here] was not found on computer '.'. ---> System.ComponentModel.Win32Exception: The specified service does not exist as an installed service
   --- End of inner exception stack trace ---
   at System.ServiceProcess.ServiceController.GenerateNames()
   at System.ServiceProcess.ServiceController.get_ServiceName()
   at System.ServiceProcess.ServiceController.Start(String[] args)
   at System.ServiceProcess.ServiceController.Start()
   at ... (my code details)

我不明白为什么,因为:

  1. 该服务的名称与ServiceInstaller的名称相同(在ServiceName属性中)
  2. 该代码在不同的服务内执行,该服务在本地系统帐户下运行。
2 个回复

该服务可能处于等待状态,尚未完成完整注册,因此无法将其识别为已安装的服务。
在设置UseNewContext属性时-安装日志文件(“ {装配名称} .InstallLog”)是否包含任何有意义的信息?
另外,要检查这是否是权限问题,可以尝试使用以下方法验证服务是否存在:

sc query <ServiceName>

从管理命令窗口?

有一个安装日志可能会有所帮助。 在服务的文件夹中查找YouServiceName.InstallLog文件。

为该服务添加安装程序就足够了(对我而言)。 你应该:

  • 在设计器中打开Service.cs文件,
  • 右键单击它,然后
  • 选择菜单选项“添加安装程序”。

它不会立即安装...您需要首先创建安装程序类。

供参考,另请参阅此问题

1 使用AssemblyInstaller安装Windows服务时出现问题

@Marc Gravell给出了如何在这里安装Windows服务的一个很好的例子。 我去实施它,一切都很好。 然后我重新启动了我的电脑......突然间,当我尝试安装时,我开始获得安全异常! 我得到一个SecurityException :“不允许请求的注册表访问”。 我想也许麻烦从 ...

4 使用setuptools安装后找不到模块

我正在分发一个Python软件包,我已经编写了该软件包,在使用setuptools安装后访问它时遇到了问题。 该软件包的结构如下 使用setuptools(40.7.0)安装后,它在我的本地Windows 10计算机上运行良好。 但是,在具有完全相同的Python和pip软件包版 ...

5 使用npm安装后找不到命令

预先感谢您浏览我的帖子! 主要问题: 当我从命令行调用http-server时,该怎么办? 我觉得这个问题显示了我的linux功能不足。 如果我想从头开始做节点和家庭酿造,在继续之前,我必须删除哪些文件和目录(或确保已通过卸载命令将其删除)? 提前致谢! ...

6 使用pip for gpu安装后找不到tensorflow

我在docker映像上,因此无法访问docker映像的“外部”。 我想安装使用gpu支持的tensorflow: cudnn和CUDA已安装并正在运行。 映像中提供了旧版本(0.11),并且可以很好地与CUDA和cudnn一起运行,但是我需要升级到版本1或更高版本。 我有两个Nvi ...

7 安装服务节点窗口后找不到服务

我的安装服务脚本如下: install_windows_service.js 在终端中,我运行命令: 节点。\\ install_windows_service.js 终端秀: 安装完成。 服务存在:true 但是我无法在Windows Services上找到此服务。 ...

8 使用 GUI 安装程序安装后我找不到我的 MinGW shell

我使用了 Mingw_get_inst 并按照 howto 页面上的说明安装了 MinGW 编译器套件。 我使用了 GUI 安装程序。 然后我将路径更改为包含 C:\\MingW; . 当我转到“开始”菜单 -&gt; 所有程序 -&gt; MingW 时,其中存在的唯一文件是卸载程序。 how ...

10 安装后找不到pip

在告诉我没有pip之后,我在python上安装了“ pip”: 在这里,它告诉我安装正常: 但是然后我尝试安装此: 但它告诉我: 为什么找不到“点子”? 编辑:图片为刘易斯的答案: 屏幕截图5: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM