如何在未以管理员身份登录时开发.Net服务

如何在未以管理员身份登录时开发.Net服务,.net,service,.net,Service,当我不是以管理员身份运行时,是否有一种在.Net中开发服务的简单方法?我遇到了几个问题。首先,在调试时,不能只从VisualStudio中按F5,因为它说必须首先安装服务,然后从services administrator工具运行服务。问题是没有管理员权限,我无法创建或控制服务。我们正在使用Windows Server 2008和AD来管理我们的用户。我是否可以为用户提供一组特定的权限,以便他们可以添加/删除/启动/停止服务?如果我们只希望开发人员访问他们自己实际创建的服务怎么办?此外,一旦服务

当我不是以管理员身份运行时,是否有一种在.Net中开发服务的简单方法?我遇到了几个问题。首先,在调试时,不能只从VisualStudio中按F5,因为它说必须首先安装服务,然后从services administrator工具运行服务。问题是没有管理员权限,我无法创建或控制服务。我们正在使用Windows Server 2008和AD来管理我们的用户。我是否可以为用户提供一组特定的权限,以便他们可以添加/删除/启动/停止服务?如果我们只希望开发人员访问他们自己实际创建的服务怎么办?此外,一旦服务运行,调试它的最佳方法是什么。假设服务已启动并已运行,Visual Studio可以附加到已运行的进程,是否有更好的方法可以从服务的入口点开始调试?

使用服务时,我倾向于创建一个控制台应用程序,以便在开发期间从中运行代码。这意味着您必须将服务作为一个薄层覆盖在执行该工作的代码上,这样您就可以从控制台应用程序调用该代码,但这无论如何都不是一个坏主意


我知道这并不能完全回答你的问题,但希望能对你有所帮助

您的用户需要权限才能作为服务登录

使用管理工具、本地安全策略、本地策略、用户权限分配

将您的用户添加到“作为服务登录”中的列表中

您不能将此权限限制到特定服务

对于调试-我使用的一个技巧是添加
Sleep(20000),以便给调试器附加时间。您必须确保您的服务不断告诉服务控制Maanger它处于唤醒状态(ServiceStatus=service\u START\u PENDING),否则它将被假定为死了,并被杀死。

Kibbee

这实际上是我自己遇到的一个问题。解决VisualStudio问题的最简单方法是创建一个应用程序,该应用程序可以在服务级别的顶部正常工作。这可能是一个简单的控制台应用程序,以与服务相同的方式进行呼叫。如果做得好,这将与服务一样工作,而不是真正的服务,这将允许开发人员正确地测试和调试


实际上,您可以让用户在不担任管理员的情况下运行服务,现在我不确定您是否可以将他们隔离到特定的服务。

这是一个好主意,但能够调试服务本身也很有用,因为它可能在内置或不同的用户帐户下运行。我考虑过这一点。创建一个小型GUI来启动/停止“服务”,并显示从服务返回的消息(通过在事件上注册)并不难。我想我可能会朝这个方向走,因为它似乎让开发变得更容易,而不会给用户超出他们需要的更多权限。@Kibbee这是基本的想法。我编写的大多数服务都运行来自其他库的代码,而实际服务本身的代码很少。