使用管理员帐户运行asp.net程序
我需要使用管理员帐户并启用桌面交互,从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
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();
另一个用户已建议进行模拟。如果这足够好的话,就这样吧。不过,正如他所说,还有一些维护难题需要处理,还有一些安全问题 我过去使用过的一些选项可能适用于您的情况,也可能不适用于您的情况:
无论采用哪种方法,都可以避免在ASP页面中存储任何凭据,并且不必授予它不需要的进程权限。不确定嵌入清单文件如何获得从网络服务帐户(ASP.NET)运行的控制台的管理员权限。我已将清单文件嵌入到控制台应用程序中,但正如预期的那样,它仅在asp.net帐户下运行。有关实际参数含义的更多详细信息,请参见。但从外观上看,如果您使用“requireAdministrator”,它应该与管理员帐户一起运行。不幸的是,ASP.NET帐户没有模拟权限,因此我无法从ASP.NET登录到管理员帐户。似乎已结束循环。您所能做的就是将应用程序池标识设置为本地管理员组(如本地系统)中的帐户。但在web应用程序中调用控制台应用程序从来都不是最佳实践。