0

所以在这里我再次遇到了另一个 MSDN 失败。像往常一样,我决定学习如何用 C# 编写 Windows 服务,并且由于许多教程提供的代码不完整或写得不好,我决定使用 MSDN。

我已遵循每一步,但我的服务将无法安装。

我正在关注的页面是:http: //msdn.microsoft.com/en-us/library/zt39148a (v=vs.110).aspx

我的代码是:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;

namespace WindowsService1
{
    public partial class WindowsService1 : ServiceBase
    {
        public WindowsService1()
        {
            InitializeComponent();

            if (!System.Diagnostics.EventLog.SourceExists("MySource"))
            {
                System.Diagnostics.EventLog.CreateEventSource(
                    "MySource", "MyNewLog");
            }
            eventLog1.Source = "MySource";
            eventLog1.Log = "MyNewLog";
        }

        protected override void OnStart(string[] args)
        {
            eventLog1.WriteEntry("In OnStart");
        }

        protected override void OnStop()
        {
            eventLog1.WriteEntry("In onStop.");

        }

        protected override void OnContinue()
        {
            eventLog1.WriteEntry("In OnContinue.");
        }
    }
}

我已经进入开发人员命令提示符,cd 到包含我的 .exe 的目录(调试文件夹),我已经:

installutil WindowsService1.exe并且也尝试过installutil.exe WindowsService1.exe,但安装总是失败,并显示以下文本:

C:\Program Files (x86)\Microsoft Visual Studio 11.0>cd C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug

C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug>installutil WindowsService1.exe Microsoft (R) .NET Framework 安装实用程序版本 4.0.30319.32559 版权所有 (C) Microsoft Corporation。版权所有。

运行事务安装。

开始安装的安装阶段。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Wind owsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。安装程序集“C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Windows sService1\WindowsService1\bin\Debug\WindowsService1.exe”。受影响的参数是:logtoconsole = logfile = C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService 1\WindowsService1\bin\Debug\WindowsService1.InstallLog 程序集路径 = C:\Users\Tommy\Documents\Visual Studio 2013\项目\WindowsService1\WindowsService1\bin\Debug\WindowsService1。

安装阶段发生异常。System.InvalidOperationException:无法在计算 r '.' 上打开服务控制管理器。此操作可能需要其他权限。引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:访问被拒绝。

安装的回滚阶段即将开始。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Wind owsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。回滚程序集“C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Wind owsService1\WindowsService1\bin\Debug\WindowsService1.exe”。受影响的参数有:logtoconsole = logfile = C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService 1\WindowsService1\bin\Debug\WindowsService1.InstallLog 汇编路径 = C:

回滚阶段成功完成。

事务安装已完成。安装失败,已回滚。

C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug>installutil WindowsService1 Microsoft (R) .NET Framework 安装实用程序版本 4.0.30319.32559 版权所有 (C) Microsoft Corporation。版权所有。

初始化安装时发生异常: System.IO.FileNotFoundException: 无法加载文件或程序集 'file:///C:\Use rs\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\b in\Debug\ WindowsService1' 或其依赖项之一。该系统找不到指定的文件..

C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug>installutil WindowsService1.exe Microsoft (R) .NET Framework 安装实用程序版本 4.0.30319.32559 版权所有 (C) Microsoft Corporation。版权所有。

运行事务安装。

开始安装的安装阶段。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Wind owsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。安装程序集“C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Windows sService1\WindowsService1\bin\Debug\WindowsService1.exe”。受影响的参数是:logtoconsole = logfile = C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService 1\WindowsService1\bin\Debug\WindowsService1.InstallLog 程序集路径 = C:\Users\Tommy\Documents\Visual Studio 2013\项目\WindowsService1\WindowsService1\bin\Debug\WindowsService1。

安装阶段发生异常。System.InvalidOperationException:无法在计算 r '.' 上打开服务控制管理器。此操作可能需要其他权限。引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:访问被拒绝。

安装的回滚阶段即将开始。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Wind owsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。回滚程序集“C:\Users\Tommy\Documents\Visual Studio 2013\Projects\Wind owsService1\WindowsService1\bin\Debug\WindowsService1.exe”。受影响的参数有:logtoconsole = logfile = C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService 1\WindowsService1\bin\Debug\WindowsService1.InstallLog 汇编路径 = C:

回滚阶段成功完成。

事务安装已完成。安装失败,已回滚。

C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug>

它还将一个 INSTALLLOG 文件输出到调试目录中,其中包含(相同的信息):

运行事务安装。

开始安装的安装阶段。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。

安装阶段发生异常。System.InvalidOperationException:无法在计算机“.”上打开服务控制管理器。此操作可能需要其他权限。引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:访问被拒绝。

安装的回滚阶段即将开始。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。

回滚阶段成功完成。

事务安装已完成。

运行事务安装。

开始安装的安装阶段。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。

安装阶段发生异常。System.InvalidOperationException:无法在计算机“.”上打开服务控制管理器。此操作可能需要其他权限。引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:访问被拒绝。

安装的回滚阶段即将开始。查看日志文件的内容以了解 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。该文件位于 C:\Users\Tommy\Documents\Visual Studio 2013\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。

回滚阶段成功完成。

事务安装已完成。

然后我回到 MSDN。要查看如果安装失败该怎么办,但我看到的是:

If the service installs successfully, installutil.exe will report success.如果安装失败,没有关于如何处理的其他信息。


我在这上面花了几天时间,我已经学习了超过 8 个教程,所有这些教程都包含不完整或错误的代码(不起作用)。所以我最终决定再次信任 MSDN,但像往常一样,我想知道到底发生了什么。

我的用户帐户具有完整的读/写/执行权限,是管理员,我已检查计算机管理(> 服务和应用程序)并确认我的 Windows 服务在此处列出。

现在我该怎么做?如何创建 Windows 服务(有效)?

4

2 回答 2

4
An exception occurred during the Install phase. System.InvalidOperationException: Cannot open Service Control Manager on computer '.'. This operation might require other privileges.

“以管理员身份”运行您的开发人员命令提示符。作为管理员与以管理员身份运行进程不同。

来自 MSDN:

在开始菜单或开始页上,打开开发人员命令提示符的快捷菜单,然后选择以管理员身份运行。

于 2013-11-13T08:42:19.670 回答
1

安装阶段发生异常。System.InvalidOperationException:无法在计算 r '.' 上打开服务控制管理器。此操作可能需要其他权限。引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:访问被拒绝。

该错误说明了问题所在:您无权安装该服务。

如果机器是域成员,则本地管理员帐户完全有可能没有安装服务所需的权限。

它也可能被 AV 软件阻止,或者您的服务需要添加到白名单中。可能性几乎是无穷无尽的,因此您需要找出具体错误是什么。

您可能会从安全事件日志中获得更多信息。您还可以尝试 sysinternals 进程监视器。它应该向您展示它正在尝试做什么以及失败的原因。

我的用户帐户具有完整的读/写/执行权限,是管理员

如果您在域中,则可能需要成为域管理员。

于 2016-07-15T19:59:19.750 回答