2009-12-09 225 views
4

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(); 

问候, 托马斯

+0

所有你能做的就是设置应用程序池标识的帐户是本地管理员组(如本地系统)英寸但在网络应用程序中调用控制台应用程序绝不是最佳做法。 – 2013-11-04 02:37:26

回答

0

,你可以使用模拟,还有一个例子here

个人而言,我不喜欢在asp.net模拟,你需要处理的密码或者没有被改变或在代码中更改它们。没有办法像asp.net用户那样运行你想要的东西吗?

编辑:

你可以acyually通过使用“网络服务”作为用户名冒充网络服务,这将至少allieviate密码发出一点,

+1

不幸的是,ASP.NET的帐户没有模拟权限,所以我不能从ASP.NET登录管理员帐户。似乎闭环。 – Tomas 2009-12-09 14:51:40

0

您可以使用清单文件和将其构建到您的控制台应用程序中,该应用程序将指示它始终在管理员帐户下运行。看到这个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(); 
+0

不知道如何嵌入清单文件可以获取这是由网络服务帐户(ASP.NET)运行控制台管理员权限。 我已经嵌入清单文件到我的控制台应用程序,但按预期它只能在asp.net帐户下运行。 <?xml version =“1.0”encoding =“utf-8”?> Tomas 2009-12-09 14:15:08

+0

参见http://msdn.microsoft.com/en-us/library/bb756929。 aspx以获取更多关于实际参数意味着什么的详细信息,但如果使用“requireAdministrator”,则它应该以Admin帐户运行。 – James 2009-12-09 14:45:10

0

另一个用户已经建议模仿。如果这足够好,那么你去。就像他说的那样,有些维护令人头疼,有些安全问题。

,我已经在过去这可能会或可能不会适用于您的情况中使用的一些选项有:

  1. 如果任务是在一个可预测的时间表,只是将它添加到任务计划Windows,设置适当的工人帐户(管理员,或其他),让我们走吧。我相信也有以编程方式触发计划任务的方法,但我从来没有这样做过。谷歌搜索应该让你去。

  2. 实现控制台应用程序逻辑作为下适当的帐户运行的服务。然后让服务从您的Web应用程序侦听“触发器” - 文件放置或更简单的操作。

无论哪种方式的想法是为了避免存储您的ASP页面中的任何credientials,并没有给予它并不需要一个过程的权利。