C# 无法调试windows服务VS2010 Win7

C# 无法调试windows服务VS2010 Win7,c#,.net,visual-studio-2010,windows-7,service,C#,.net,Visual Studio 2010,Windows 7,Service,从XP和VS2005迁移到Win7和VS2010后,我无法调试任何服务 我可以编译,我可以安装,我可以正确运行服务 但是,我需要调试它们。当我尝试附加到进程时,我会像在VS2005上一样选择正在运行的进程,然后收到一个错误,告诉我需要管理员权限 我已经是管理员了。另外,在互联网上搜索了很多之后,我发现通过右键单击以管理员身份运行VS2010应该可以修复它,但我仍然不能 我还尝试在vslauncher.exe属性上标记复选框,以便始终以管理员身份运行它。VS2010窗口在顶部显示它实际上是以管理员

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

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

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

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

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


有人知道如何继续吗?

编辑您的服务并在OnStart方法中输入以下行:

调试器。启动;重要的是,您应该在OnStart中执行此操作,而不是在OnStart启动的线程中执行此操作,这样,如果存在任何bug,您就可以在服务崩溃之前捕获它

服务启动时,调试器将打开。Windows将提供自动启动提升的visual studio,以便您可以连接到您的服务。我发现将这一行与app.config设置放在一起非常有用,这样您就可以根据需要启用它,即启动并将调试器附加到服务


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

这是一个权限问题。 Win7附带了一个新的安全系统,我必须将此权限添加到我的个人资料中,即使我是管理员:

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

在那里,我添加了我自己的用户。重新启动机器很重要!!如果不重新启动,它将无法工作

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


谢谢大家的帮助。

如果启动TaskManager并右键单击服务并选择“调试”,您是否会遇到同样的行为/问题?嗨,鲍勃。它说即时调试此异常失败,出现以下错误:登录用户没有权限调试崩溃的应用程序。但是,应用程序没有崩溃!!服务仍在正常运行…嗯,听起来确实有点奇怪。可能的解决方法是在cmdline应用程序中托管服务服务器,而不是在调试时作为服务—使调试更容易—但可能不适用于您的情况。这一定是Win7安全系统的一些问题。。。在XP上,我可以轻松调试相同的项目。无论如何,我还没有听说过在cmdline应用程序中调试服务。。。你知道任何关于如何做到这一点的网页或教程吗?这取决于服务器代码的结构。例如,在WCF中,服务器只是一个类,它可以由服务部署或cmdline应用程序开发/调试托管-但是您的服务器代码可能硬连接到您的服务中,这不是一个好的设计-如果您可以将您的服务代码与推荐的服务器代码分离,那么无论如何Hi Spence!很好的帮助,调试器。附上这个我不知道的东西,它将帮助我在服务开始时调试我以前无法接触到的部分。然而,附加服务的问题并没有用它来解决,因为这是一个权限问题。无论如何,非常感谢你的帮助!!