Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.net web应用中启动windows服务的安全设置_Asp.net_Security - Fatal编程技术网

在ASP.net web应用中启动windows服务的安全设置

在ASP.net web应用中启动windows服务的安全设置,asp.net,security,Asp.net,Security,我在一个内部ASP.net应用程序中有一些代码,如果web应用程序正在运行的服务器上停止了自动服务,我们可以使用这些代码启动自动服务。唯一的问题是它在服务器上运行时似乎没有启动服务。当它在我的桌面上本地运行时,它运行得很好,所以我猜我必须为ASP.net用户提供某些安全设置 这是我的密码: protected void StartService(object sender, EventArgs e) { LinkButton serviceButton = (LinkButton)sen

我在一个内部ASP.net应用程序中有一些代码,如果web应用程序正在运行的服务器上停止了自动服务,我们可以使用这些代码启动自动服务。唯一的问题是它在服务器上运行时似乎没有启动服务。当它在我的桌面上本地运行时,它运行得很好,所以我猜我必须为ASP.net用户提供某些安全设置

这是我的密码:

protected void StartService(object sender, EventArgs e)
{
    LinkButton serviceButton = (LinkButton)sender;
    string name = serviceButton.ID;

    ManagementPath path = new ManagementPath();

    path.Server = System.Environment.MachineName;

    path.NamespacePath = @"root\CIMV2";

    path.RelativePath = "Win32_service.Name='" + name + "'";

    ManagementObject service = new ManagementObject(path);

    ManagementBaseObject temp = service.InvokeMethod("StartService", null, null);

    Thread.Sleep(100);

    GetStoppedServices();
}
有没有人对如何让它发挥作用有什么想法

编辑:为了澄清,web应用程序与我要启动服务的服务器在同一台服务器上运行

编辑2:有一个想法,并试图使用此代码代替。。没有骰子

    ProcessInfo = new ProcessStartInfo("cmd.exe", "/C net start " + name);
    ProcessInfo.CreateNoWindow = true;
    ProcessInfo.UseShellExecute = false;
    Process = Process.Start(ProcessInfo);
    Process.Close();

可能是访问权问题。当您在本地(通过VisualStudio和内置Cassini web服务器)运行应用程序时,我认为您是在以自己的身份运行它,因此它可以正常工作

当您通过IIS(在服务器上)运行应用程序时,它将以应用程序池中指定的任何用户的身份运行。(我认为它的“网络服务”是默认的)。检查它在IIS中的用户,并尝试授予该用户启动服务的权限

您正在运行哪个版本的IIS?如果是Win 2K3服务器,我猜是6.0

有关配置应用程序池的信息:

编辑:您可以使用(microsoft工具)配置服务权限:

假设您有一个用户“Johnny”,您希望Johnny能够停止并启动万维网发布服务。只需运行以下subinacl.exe命令:

subinacl/service W3SVC/GRANT=YOURDOMAIN\Johnny=TO

很明显,你会想用你的域名替换你的域名。结尾的TO是标识符,它告诉subinacl您实际希望授予Johnny哪些操作。T表示“启动服务”,O表示“停止服务”


有关更多信息,请查看Ingmar的相关信息。

可能是访问权限问题。当您在本地(通过VisualStudio和内置Cassini web服务器)运行应用程序时,我认为您是在以自己的身份运行它,因此它可以正常工作

当您通过IIS(在服务器上)运行应用程序时,它将以应用程序池中指定的任何用户的身份运行。(我认为它的“网络服务”是默认的)。检查它在IIS中的用户,并尝试授予该用户启动服务的权限

您正在运行哪个版本的IIS?如果是Win 2K3服务器,我猜是6.0

有关配置应用程序池的信息:

编辑:您可以使用(microsoft工具)配置服务权限:

假设您有一个用户“Johnny”,您希望Johnny能够停止并启动万维网发布服务。只需运行以下subinacl.exe命令:

subinacl/service W3SVC/GRANT=YOURDOMAIN\Johnny=TO

很明显,你会想用你的域名替换你的域名。结尾的TO是标识符,它告诉subinacl您实际希望授予Johnny哪些操作。T表示“启动服务”,O表示“停止服务”


有关更多信息,请查看Ingmar的相关内容。

不要使用System.Management对象来控制服务,请查看该类。所有的启动/停止/暂停方法都是可用的,并且以更结构化的方式提供

不过,您可能仍然会遇到权限问题。您的web应用的执行帐户将需要权限来控制您希望影响的目标服务


根据您的平台(Win Serv的哪个版本),将为您的web应用程序的匿名请求执行不同的帐户。验证哪些帐户起作用(或者如果您有经过身份验证的请求,您知道您的用户),并确定它们对Windows服务的权限。

不要使用系统。用于控制服务的管理对象,请查看该类。所有的启动/停止/暂停方法都是可用的,并且以更结构化的方式提供

不过,您可能仍然会遇到权限问题。您的web应用的执行帐户将需要权限来控制您希望影响的目标服务


根据您的平台(Win Serv的哪个版本),将为您的web应用程序的匿名请求执行不同的帐户。验证哪些帐户开始使用(或者如果您有经过身份验证的请求,您知道您的用户),并确定它们对您的Windows服务的权限。

适用于Windows 7、Windows Server 2008、Windows Server 2008 R2、Windows Vista

  • 打开IIS管理器。(从开始->运行->键入inetmgr并按enter键)

  • 在连接窗格中,展开服务器节点并单击应用程序池

  • 在“应用程序池”页面上,选择要为其指定标识的应用程序池,然后单击“操作”窗格中的“高级设置”

  • 对于标识属性,请单击。。。按钮打开“应用程序池标识”对话框

  • 如果要使用内置帐户,请选择内置帐户选项,然后从列表中选择一个帐户。从列表中选择本地系统

  • 如果要使用自定义标识,请选择“自定义帐户”选项,然后单击“设置”以打开“设置凭据”对话框。然后在用户名文本框中键入自定义帐户名,在密码文本框中键入密码,在确认密码文本框中重新键入密码,然后单击确定

  • 单击“确定”关闭“应用程序池标识”对话框


  • 右键单击应用程序拉取,然后停止,然后再次单击Windows 7、Windows Server 2008、Windows Server 2008 R2和Windows Vista的开始

  • 打开IIS管理器。(从开始->运行->键入inetmgr并按enter键)