我需要使用管理员帐户从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();致敬,托马斯
发布于 2009-12-09 21:17:38
您可以使用模拟,这里有一个示例here
就我个人而言,我不喜欢asp.net中的模拟,你需要处理密码不被更改或在代码中更改它们。作为asp.net用户,有没有办法运行您想要的东西?
编辑:
你可以通过使用"NETWORK SERVICE“作为用户名来模拟网络服务,这至少会减少一些密码问题。
发布于 2009-12-09 21:22:18
您可以使用清单文件并将其构建到控制台应用程序中,该应用程序将指示它始终在管理员帐户下运行。请参阅此example。
如果这对您无效,那么您可以尝试在ProcessStartInfo属性中传递管理员帐户凭据,例如
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(); 发布于 2009-12-09 21:27:44
另一个用户已建议进行模拟。如果这足够好的话,你就可以开始了。然而,就像他说的,有一些维护问题需要处理,也有一些安全问题需要处理。
我过去使用过的一些选项可能适用于您的情况,也可能不适用于您的情况:
无论哪种方式,这样做都是为了避免在ASP页面中存储任何凭证,并且不必授予它不需要的进程权限。
https://stackoverflow.com/questions/1873796
复制相似问题