24

我创建了一个窗口服务并安装它,我创建了它的部署项目并安装了它。安装后我盯着它。它成功启动。

第二天我做了一些修改,重建并重新安装,但现在它没有安装。

然后我认为它与安装程序有关,让我们为服务创建一个自定义安装程序,以便我可以随时更新我的​​代码。

如果有人将来需要它,我会像这样创建它。

public class MyInstaller : Installer
    {
        ServiceProcessInstaller spi;
        ServiceInstaller si;
        public MyInstaller()
        {            
            spi = new ServiceProcessInstaller();
            spi.Account = ServiceAccount.LocalSystem;

            si = new ServiceInstaller();
            si.StartType = ServiceStartMode.Manual;
            si.ServiceName = "MyService";
            si.DisplayName = "My Service";
            si.Description = "service installed from command line";

            this.Installers.Add(spi);
            this.Installers.Add(si);

        }
}

我通过检查参数 args 从 main 方法调用它。

                            case "-i":
                            case "-install":
                                ti = new TransactedInstaller();
                                mi = new MyInstaller();
                                ti.Installers.Add(mi);
                                string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log";
                                ctx = new InstallContext(logPath, cmdline);
                                ti.Context = ctx; //.Context ( ctx );
                                ti.Install(new Hashtable());
                                break;

现在当我尝试安装时。我收到错误 System.Security.SecurityException:找不到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性。

我用谷歌搜索,发现服务将在安装时尝试访问应用程序日志并在那里写入日志。

我没有写任何事件日志。我有我的 log4net 用于记录。但仍然是它的默认行为。

现在如何克服这个问题?即使我拥有所有权限,它也没有安装。

谢谢

4

3 回答 3

75

我发现有时您可能需要“以管理员身份运行”。如果您从命令提示符安装,您可能需要使用“以管理员身份运行”来启动它。

于 2012-05-03T06:27:48.483 回答
1

我可能对消息有单独的根本原因,但我通过将我的服务更改为作为 LocalSystem 运行(这就是我想要的)而不是 LocalService 来修复它。

于 2015-04-15T21:35:14.097 回答
0

我可以确认在“windows 7 64 bit”和“Windows 10”下,您必须:

1)以管理员身份运行Visual Studio命令提示符(右键单击..其他..以管理员身份运行)

在此处输入图像描述

2)转到您拥有exe的“obj”文件夹。(cd [所有路径到 \obj]) 3) 启动 installutil [myservice.exe]

如果不以“管理员”身份运行,即使在旧的 win7 上也会失败。:(

注意:MSDN 确实解释了它:

(在:https ://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer )

“要安装 Windows 服务,您必须在安装它的计算机上拥有管理凭据。”

:)

于 2018-02-05T12:51:13.897 回答