用管理员帐户
问题描述:
asp.net运行程序,我需要使用管理员帐户和启用桌面交互运行从ASP.NET应用程序中一个控制台应用程序。我已尝试下面的代码,控制台应用程序运行良好,但在NETWORK SERVICE帐户内。任何想法如何在管理员帐户下运行控制台?用管理员帐户
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();
问候, 托马斯
答
您可以使用清单文件和将其构建到您的控制台应用程序中,该应用程序将指示它始终在管理员帐户下运行。看到这个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();
答
另一个用户已经建议模仿。如果这足够好,那么你去。就像他说的那样,有些维护令人头疼,有些安全问题。
,我已经在过去这可能会或可能不会适用于您的情况中使用的一些选项有:
如果任务是在一个可预测的时间表,只是将它添加到任务计划Windows,设置适当的工人帐户(管理员,或其他),让我们走吧。我相信也有以编程方式触发计划任务的方法,但我从来没有这样做过。谷歌搜索应该让你去。
实现控制台应用程序逻辑作为下适当的帐户运行的服务。然后让服务从您的Web应用程序侦听“触发器” - 文件放置或更简单的操作。
无论哪种方式的想法是为了避免存储您的ASP页面中的任何credientials,并没有给予它并不需要一个过程的权利。
所有你能做的就是设置应用程序池标识的帐户是本地管理员组(如本地系统)英寸但在网络应用程序中调用控制台应用程序绝不是最佳做法。 – 2013-11-04 02:37:26