通过ASP.NET启动服务需要什么权限?

时间:2011-05-31 07:57:12

标签: c# asp.net windows-services privileges application-pool

我想知道让用户在我们的服务器上启动服务所需的特权。

情况如下,我们网站上的某些人可以在服务器上启动某项服务(Windows 2008和IIS7)。到目前为止我的工作方式是指定我使用我的用户帐户创建的应用程序池(msdn的模拟方法由于某种原因不起作用)。然而,现在我想将该用户帐户更改为仅具有启动和停止服务的权限的用户帐户(以及使他能够执行此操作所需的一切)。

该网站是用ASP.NET和C#编写的。我使用ServiceController来启动和停止我的服务。

我应该为该用户分配哪些权限?

编辑:我只想在这里澄清一些事情。我设法让这个东西在应用程序池中工作(虽然它不能通过调试器工作)。但它只适用于属于 Administrators组的用户,这不是我想要的。我想指定特殊用户,能够通过网站启动和停止服务。那么我需要什么特权?请具体说明。

编辑2:我发现为什么我的服务无法在调试器中启动。我没有使用管理员权限运行Visual Studio。我现在感觉很蠢..无论如何,问题仍然存在,因为我仍然需要具有正确权限的特殊用户。

任何评论将不胜感激! 亲切的问候, Floris Devriendt

3 个答案:

答案 0 :(得分:0)

您必须在web.config中将identity impersonate设置为true,如果您使用的是Windows身份验证,则需要在IIS中进行设置。如果您在两者之间使用WCF服务,则可能需要查看Impersonation in WCF.

答案 1 :(得分:0)

(术语抱怨) - 您不应该查看特权,因为这些特权适用于整个机器。您应该查看权限

关于允许远程用户启动和停止服务的答案here。您可能需要运行相同的步骤以允许您的网站拥有特定权限的帐户,即:

  • 复制scmanager上的IA用户权限,以允许非交互式用户访问服务控制器,
  • 根据特定服务为您的用户添加适当的权限。

这两个操作都使用sc命令行工具。希望您可以根据具体情况配合使用。类似的东西:

sc sdset scmanager D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CCLCRPRC;;;S-1-5-3-3127463467463)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

其中S-1-5-3-3127463467463是网站帐户的SID,并且:

sc sdset Alerter D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCLCSWLOCRRCWPRP;;;S-1-5-3-3127463467463)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

whight Alerter是特定服务的名称,而S-1-5-3-3127463467463又是网站帐户的SID。

(不确定是否要破坏这些命令以使它们在SO上更具可读性 - 在命令行中运行时它们不需要换行符)

答案 2 :(得分:0)

您必须有权向用户提供服务,并将其用于应用程序池。

  • 单击“开始”,指向“设置”,单击“控制面板”,然后双击“管理工具”。
  • 双击服务
  • 在“登录”选项卡上,单击“本地系统帐户”,然后单击“应用”。
  • 在“常规”选项卡上,单击“启动”以重新启动该服务。
  • 退出服务工具。