无法卸载 Windows 服务:“...无法删除,因为它与日志名称相同。”
Posted
技术标签:
【中文标题】无法卸载 Windows 服务:“...无法删除,因为它与日志名称相同。”【英文标题】:cannot uninstall a windows service: "...cannot be deleted, because it's equal to the log name." 【发布时间】:2011-07-18 05:54:21 【问题描述】:我需要卸载我创建的 Windows 服务,但使用 Windows 中的“卸载或更改程序”程序时出现此错误:
错误。发生异常时 卸载。这个例外将是 忽略,卸载将 继续。然而,申请 之后可能无法完全卸载 卸载完成。 -> 的 事件日志源“111 我的服务” 不能删除,因为相等 到日志名称。
然后我单击“确定”,该程序仍列在已安装程序列表中。更糟糕的是,我无法安装它的新版本。 windows 安装程序说已经安装了这个产品的另一个版本,我应该先卸载它。如何摆脱这个程序?
更新这是我在其上运行 InstallUtil.exe /u 命令时发生的情况。
卸载开始。见 日志文件的内容 C:\MyService.MyService。大会的进展。文件 位于 C:\MyService.MyService.InstallLog。 卸载程序集 'C:\MyService.MyService.exe'。做作的 参数是:logtoconsole = 程序集路径 = C:\MyService.exe 日志文件 = C:\MyService.MyService.InstallLog 删除 EventLog 源 111 我的 服务。期间发生异常 的卸载 System.Diagnostics.EventLogInstaller 安装程序。 System.InvalidOperationException: 事件日志源“111 我的服务” 不能删除,因为相等 到日志名称。发生异常 卸载时。这个例外 将被忽略,卸载将 继续。然而,申请 可能没有完全卸载 l 是 完成。
卸载已完成。一个 卸载时发生异常。 此异常将被忽略,并且 卸载将继续。然而 应用程序可能不完全 l 卸载完成。
【问题讨论】:
【参考方案1】:尝试在cmd中执行下一条命令:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /u "c:\myservice.exe"
第二个选项是:
sc delete <service name>
运行上面的行后,您可以尝试在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
中删除服务分支。
【讨论】:
sc 确实将其从“服务”列表中删除。然后我删除了 HKEY_LOCAL_MACHINE...SOFTWARE 下的注册表,它被设置为放置。但它仍然以某种方式注册了已安装的版本。 如果有人因为您没有以管理员身份运行开发人员命令提示符/CMD 而最终出现在这里,您需要以管理员身份运行它。 该解决方案对我不起作用。我仍然不得不从注册表中手动删除键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\MyServiceName
。【参考方案2】:
The accepted answer 对我不起作用。
有效的方法是在管理员模式下打开 regedit 并找到该服务并将其删除。
【讨论】:
【参考方案3】:这只是发生在我身上,上面的解决方案在您运行 InstallUtil.exe 或删除服务时不起作用。我最初使用“LocalSystem”安全上下文设置了我的服务,并安装了它。后来我将安全上下文更改为“用户”并重新编译了服务可执行文件并尝试卸载旧服务。出现了此处描述的错误消息,一旦我将安全上下文更改回“LocalSystem”,我就可以完全卸载。
换句话说,您可能希望使用创建它的可执行文件来卸载旧服务,而不是使用可能进行修改的新服务。
【讨论】:
【参考方案4】:我遇到了完全相同的问题(selected answer worked 中没有任何内容)。
令人惊讶的是,解决问题的是(使用标准的“卸载或更改程序”或“程序和功能”窗口对话框)右键单击程序并选择修复(这显然是成功的),然后卸载。
【讨论】:
谢谢!这个对我有用。我不知道“修复”这个东西很有用。 :D以上是关于无法卸载 Windows 服务:“...无法删除,因为它与日志名称相同。”的主要内容,如果未能解决你的问题,请参考以下文章