2

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

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

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

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

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

有人知道如何进行吗?

4

2 回答 2

3

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

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

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

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

于 2012-04-20T12:15:00.707 回答
3

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

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

在那里,我添加了自己的用户。重启机器(重要!!不重启就不行)。

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

谢谢大家的帮助。

于 2012-04-23T08:43:45.567 回答