无法调试 Windows Service VS2010 Win7

本文关键字:VS2010 Win7 Service Windows 调试 | 更新日期: 2023-09-27 18:31:49

从XP和VS2005迁移到Win7和VS2010后,我无法调试任何服务。

我可以编译,我可以

安装,我可以正确运行服务。

但是,我需要调试它们。当我尝试附加到进程时,我像往常一样在VS2005上选择正在运行的进程,并且收到一个错误,告诉我需要管理员权限。

我已经是管理员了。另外,在互联网上搜索了很多之后,我发现以管理员身份运行VS2010(通过右键单击)应该可以修复它,但我仍然不能。

我还尝试在 vslauncher.exe 属性上标记复选框以始终以管理员身份运行它。VS2010窗口在顶部显示它实际上是以管理员身份运行的,但是当我尝试附加到进程时,它再次显示我需要管理员权限。

有人知道如何进行吗?

无法调试 Windows Service VS2010 Win7

这是一个权限问题。Win7带有一个新的安全系统,我不得不在我的个人资料中添加此权限(即使是管理员):

控制面板 -> 管理工具 -> 本地安全策略 -> 本地策略 -> 用户权限分配 -> 调试程序 -> 添加用户或组。

在那里,我添加了自己的用户。重新启动计算机(重要!!如果不重新启动,它将不起作用)。

之后,我能够附加进程来调试它们。解决这个问题已经很长时间了,我希望帮助其他发现同样问题的人。

谢谢大家的帮助。

编辑您的服务并将以下行放入 OnStart() 方法中:

Debugger.Launch(); 重要的是,在 OnStart() 而不是 OnStart() 启动的线程中执行此操作,以便如果存在任何错误,您可以在服务崩溃之前捕获它。

当服务启动时,调试器将打开。 然后,Windows 将提供自动启动提升的视觉工作室,以便您可以附加到您的服务。 我发现将此行与 app.config 设置放在一起非常有用,以便您可以根据需要启用它(即启动并将调试器附加到服务)。

仅供参考,当您使用Vista/Windows 7时,您可以以管理员身份运行应用程序。 但是,这些应用明确拒绝管理权限,除非您使用"提升"权限启动它们。 这是一项称为 UAC 的安全功能。