需要帮助重新安装Windows服务而无需重新启动

时间:2013-09-12 12:23:57

标签: c# windows service

我在Visual Studio 2010中创建了一个新的Windows服务项目,并添加了一些代码来将信息输出到事件查看器。每次我做一点改变,我都会做以下事情:

  1. 停止服务
  2. 卸载服务
  3. 关闭我的服务窗口。
  4. 确保在任务管理器中没有运行mmc的实例
  5. 重新安装服务
  6. 当我尝试第5步时,安装失败。如果我再次尝试卸载它,我会收到“此服务已被标记为删除”。没有重启,我无法再次安装该服务。这非常不方便。

    我在线搜索,这是我加入第3步和第4步的原因。这对我来说没有用。问题必须在我的计算机上,因为我在VM实例上卸载和安装服务没有问题。

    我在Windows 7上,在Visual Studio 2010上用C#编写我的服务。

4 个答案:

答案 0 :(得分:3)

实际上,您不需要为每一个小改动卸载服务。您只需要确保服务完全停止,您可以覆盖构成服务的DLL,然后重新启动它。

答案 1 :(得分:0)

不是通过手动过程描述,而是从命令提示符运行以下命令:

sc delete [服务名称]

答案 2 :(得分:0)

sc delete不会从注册表中删除事件源,并且您的服务日志仍然存在。运行regedit并查找包含您的服务名称的条目 - 如果仍有事件日志的结果,您可以删除它们。应该有所帮助,特别是如果您的服务与您的事件日志具有相同的名称

有时服务窗口有这种奇怪的行为。我注意到,如果它在您尝试卸载服务时打开,它将仅被安排删除,而不是实际删除。所以切换你的第2点和第3点。

另外,您可以制作.bat文件并在那里调用installutil.exe来卸载您的服务。只有它必须是正确的installutil.exe - 你的机器上可以有多个:对于不同的框架,x86 x64 ......它必须对你的配置是正确的。

请记住关闭服务窗口,除非你真的需要它:)

@ECHO OFF

REM The following directory is for .NET 2.0 on x64 system
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727
set PATH=%PATH%;%DOTNETFX2%

echo Uninstalling WindowsService...
echo ---------------------------------------------------
InstallUtil /u "path to your service"
echo ---------------------------------------------------
echo Done.

答案 3 :(得分:0)

尝试删除HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services下的服务密钥。