问题描述
有一个web程序,需要在客户端启动服务器的某个服务。想使用cmd执行启动,在使用Process执行cmd时,获取不到对应的服务。简单分析了一下是因为IIS用户权限不够的原因,由于安全原因又不能给IIS赋予高权限,请问各位大神,应该如何解决此问题呢。如何能在IIS匿名访问时启动服务器具有管理员权限的cmd或者怎么直接启动服务器上的某项服务。
解决方案
解决方案二:
IIS可以设置帐号的
解决方案三:
用runas命令提升权限。自己google下用法。
解决方案四:
匿名访问的情况下去启动服务器端的服务?你老大或者老板知道你要这么做吗?
解决方案五:
通过asp.net启动服务器端的服务肯定是可以做到的,不过绝对不能在没有权限管控的情况下去,匿名访问的页面去做这种动作。windowsservice通常运行在一个本地系统账户的权限下,这样的账号通常具有非常高权限,使用这个账户可以在你的系统中做很多事情。然而,asp.netweb线程运行在ASPNET账户下(windowsxp)或者NETWORKSERVICE账户下(windows2003)。服务的启动用户也要加上这个用户角色。
解决方案六:
protectedvoidStartService(objectsender,EventArgse){LinkButtonserviceButton=(LinkButton)sender;stringname=serviceButton.ID;ManagementPathpath=newManagementPath();path.Server=System.Environment.MachineName;path.NamespacePath=@"rootCIMV2";path.RelativePath="Win32_service.Name='"+name+"'";ManagementObjectservice=newManagementObject(path);ManagementBaseObjecttemp=service.InvokeMethod("StartService",null,null);Thread.Sleep(100);GetStoppedServices();}
ProcessInfo=newProcessStartInfo("cmd.exe","/Cnetstart"+name);ProcessInfo.CreateNoWindow=true;ProcessInfo.UseShellExecute=false;Process=Process.Start(ProcessInfo);Process.Close();
这两段是.net对windowsservice操作的代码。但是你的网站进程所运行的账户有足够权限。修改应用程序池运行账号的修改方法参考:1.开始-->执行-->输入inetmgr-->回车,启动iis。2.在连接面板,展开服务器节点,点击应用程序池。3.在应用程序池页面,点击你要设定程序执行账户的程序池,右键弹出操作菜单,点击高级选项。4.点击标识属性的...按钮,打开应用程序池标识属性设置对话框5.如果使用系统的内建账号,选择下拉列表项对应账号就好。如果使用自定义账户,需要确认密码。设定好后,点击确认,重启程序池。