C#.Net服务不会安装在Win 7 64位上

时间:2012-02-23 20:04:54

标签: c# .net service windows-7-x64 service-installer

  

.Net 3.5

我已经在服务exe中内置了使用-i功能安装自己的能力。我有一个自定义安装程序类,我在网上找到了一个常用的技术。该安装程序类基本上拥有自己的服务和服务流程安装程序。

此代码在很长一段时间内都运行良好。最后遇到了Win 7 64位机器,它拒绝安装。

基本上,日志显示它正在安装服务并且成功。然后它尝试创建一个事件日志,但失败并带有

  

安装阶段发生异常。   System.ComponentModel.Win32Exception:已经指定的服务   存在

我刚刚从头开始完全重新安装操作系统,我做的第一件事是尝试安装作为服务,这是同样的错误。为什么它认为事件日志已经存在?

我已经阅读了所有其他帖子,我浏览了我的注册表,但我的服务或事件日志中没有任何内容。我有完全的管理员权限,当我尝试以管理员身份打开cmd时,它甚至没有提示我,所以据我所知,我是一名管理员(我可以在我的用户个人资料中看到)。

我甚至添加了代码来检查它是否找到了使用System.Diagnostics.EventLog.SourceExists报告它发现它的EventLog,因此我添加了对System.Diagnostics.EventLog.DeleteEventSource的调用,但这没有用。

我甚至尝试从ServiceInstaller删除EventLog安装程序,但由于其他原因它开始失败。

有什么想法吗?

以下是我尝试的备用安装程序的示例代码,我发现here具有相同的结果:

public partial class Service1Installer : Installer
{
    public Service1Installer()
    {
        InitializeComponent();
        ServiceProcessInstaller process = new ServiceProcessInstaller();
        process.Account = ServiceAccount.LocalSystem;

        ServiceInstaller serviceAdmin = new ServiceInstaller();
        serviceAdmin.StartType = ServiceStartMode.Manual;
        serviceAdmin.ServiceName = "Service1";
        serviceAdmin.DisplayName = "Service1";
        serviceAdmin.Description = "Service1";

        Installers.Add(serviceAdmin);
        Installers.Add(process );
    }
}

3 个答案:

答案 0 :(得分:1)

卸载您的服务

  installutil /u yourproject.exe

重启你的机器

http://msdn.microsoft.com/en-us/library/sd8zc8ha(v=vs.80).aspx

如果您还有问题,请告诉我

答案 1 :(得分:0)

如果exe仍然驻留在磁盘上,请使用installutil作为@MicahArmantrout提及。

否则,以管理员身份打开命令行并执行:sc delete "my service name"

答案 2 :(得分:0)

最后,我的问题是我们的内部安装程序。我评论了它,现在只需从命令行安装服务,它现在安装在64位操作系统上。仍然不知道为什么它会在32位之前发挥作用。