gpt4 book ai didi

c# - 使用 AssemblyInstaller 安装 Windows 服务时出现问题

转载 作者:行者123 更新时间:2023-11-30 14:03:11 25 4
gpt4 key购买 nike

@Marc Gravell 给出了一个很好的例子来说明如何安装 Windows 服务 here .我去实现了它,一切都很好。

然后我重新启动了我的电脑...当我尝试安装时突然开始出现安全异常!我收到 SecurityException:“不允许请求的注册表访问”。我想也许问题是从重启开始的,所以就像动画片中的第二击头部可以治愈失忆症一样,我再次尝试重启......但事实证明生活并不像动画片...... :(

好的,所以我用谷歌搜索了这个问题,并找到了将注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog 的权限授予我的网络服务的建议。那也没用。我把全部权利给了每个人——欢呼!我现在得到一个不同的异常(exception)! InvalidOperationException:“无法在计算机 '.' 上打开服务控制管理器。此操作可能需要其他权限。” (内部异常是 Win32Exception: "Access is denied"。)嗯,对不起?我正在尝试在本地计算机上安装! “计算机‘.’”在那里做什么?

这非常令人沮丧,因为正如我所说,昨天它运行良好,而今天一切都崩溃了,代码库没有任何明显的变化。

这是我执行安装的代码(从 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;
}
}

安装程序代码是:

[RunInstaller(true)]
public sealed class MyServiceInstallerProcess : ServiceProcessInstaller {
public MyServiceInstallerProcess() {
this.Account = ServiceAccount.NetworkService;
}
}

[RunInstaller(true)]
public sealed class MyServiceInstaller : ServiceInstaller {
public MyServiceInstaller() {
this.Description = "My service desc";
this.DisplayName = "My service name";
this.ServiceName = "My service name";
this.StartType = ServiceStartMode.Automatic;
}
}

这里可能有什么问题?为什么事情突然开始变得困惑,之前它们运行良好?

最佳答案

以管理员身份/提升权限运行您的安装程序。让每个人都可以访问系统注册表项和其他东西是非常错误的。

关于c# - 使用 AssemblyInstaller 安装 Windows 服务时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com