使用管理员帐户运行asp.net程序

使用管理员帐户运行asp.net程序,asp.net,permissions,administrator,Asp.net,Permissions,Administrator,我需要使用管理员帐户并启用桌面交互,从ASP.NET应用程序运行一个控制台应用程序。我已经尝试了下面的代码,控制台应用程序运行正常,但在网络服务帐户内。如何在管理员帐户下运行控制台 string enginePath = Server.MapPath(@"~/engine/MyConsole.exe"); System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(engin

我需要使用管理员帐户并启用桌面交互,从ASP.NET应用程序运行一个控制台应用程序。我已经尝试了下面的代码,控制台应用程序运行正常,但在网络服务帐户内。如何在管理员帐户下运行控制台

    string enginePath = Server.MapPath(@"~/engine/MyConsole.exe");
    System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(enginePath, "");
    System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);            
    p.WaitForExit();
问候,,
Tomas

您可以使用模拟,这里有一个例子

就我个人而言,我不喜欢asp.net中的模拟,你需要处理密码要么不被更改,要么在代码中更改。是否无法以asp.net用户身份运行所需内容

编辑:


您可以通过使用“网络服务”作为用户名来模拟网络服务,这至少可以稍微避免密码问题,

您可以使用清单文件并将其构建到控制台应用程序中,该应用程序将指示它始终在管理员帐户下运行。看这个

如果这对您不起作用,那么您可以尝试在属性中传递管理员帐户凭据,例如

string enginePath = Server.MapPath(@"~/engine/MyConsole.exe");
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(enginePath, "");
info.UserName = "Administrator";
info.Password = "Password";
System.Diagnostics.Process p = System.Diagnostics.Process.Start(info);                p.WaitForExit(); 

另一个用户已建议进行模拟。如果这足够好的话,就这样吧。不过,正如他所说,还有一些维护难题需要处理,还有一些安全问题

我过去使用过的一些选项可能适用于您的情况,也可能不适用于您的情况:

  • 如果任务在可预测的计划中,只需将其添加到Windows中的计划任务中,设置适当的工作人员帐户(管理员或其他),然后放手。我相信也有一些方法可以通过编程触发预定的任务,但我从来没有这样做过。谷歌搜索应该会让你行动起来

  • 将console应用程序逻辑实现为在适当帐户下运行的服务。然后让服务监听来自web应用程序的“触发器”——文件删除或其他更简单的操作


  • 无论采用哪种方法,都可以避免在ASP页面中存储任何凭据,并且不必授予它不需要的进程权限。

    不确定嵌入清单文件如何获得从网络服务帐户(ASP.NET)运行的控制台的管理员权限。我已将清单文件嵌入到控制台应用程序中,但正如预期的那样,它仅在asp.net帐户下运行。有关实际参数含义的更多详细信息,请参见。但从外观上看,如果您使用“requireAdministrator”,它应该与管理员帐户一起运行。不幸的是,ASP.NET帐户没有模拟权限,因此我无法从ASP.NET登录到管理员帐户。似乎已结束循环。您所能做的就是将应用程序池标识设置为本地管理员组(如本地系统)中的帐户。但在web应用程序中调用控制台应用程序从来都不是最佳实践。