使用ASP.Net在特定桌面上的SERVER上启动应用程序

时间:2009-10-16 12:12:37

标签: .net asp.net security

我有许多与IIS网络服务器在同一台机器上运行的实用程序。

我要做的是允许网页实例化可执行文件。如果我使用Process.Start(),该过程将启动,但显然与Web服务器的用户相同,因此无法与桌面交互。对于99%的应用程序,这不是问题。但是,我希望能够像特定用户(只有我一样)启动它们一样运行它们。

这更像是一个尝试,看看这是否可能比一个严肃的开发项目,所以我对方法比对目标更感兴趣。

理想情况下,如果我登录到盒子(几乎总是),那么它应该像我按照快捷方式一样运行。如果没有,启动应用程序并在我登录时将其连接到我的桌面将是完美的。如果在用户登录之前无法实现,我可以接受。

我知道安全方面的考虑因素,但通过以下方式缓解这些问题:

  • 网站需要身份验证+ SSL
  • 要启动的应用列表在一个无法远程修改的文件中配置(或者完全由网络用户修改 - 只读)
  • 该框位于DMZ
  • 最坏的情况是,机器相对不重要而且可以 很容易重新成像。

我用谷歌搜索了,但这似乎是一个相当不寻常的要求所以除了“不要以为你能做到”之外没有太多的信息 - 所以我想我会问这里是为了得到任何一个a)这样做的方法或b)对为什么不能这样做的合理解释。

如果它更简单,请将Web方面放在一边 - 如何在其他用户的安全上下文中启动进程并附加到其桌面(如果有的话)

提前感谢您提供的任何帮助和指示。

3 个答案:

答案 0 :(得分:1)

这是一个想法:

创建一个asp.net应用程序来更新一个表,其中包含有关需要运行的应用程序的信息。因此,无需登录服务器即可设置应用程序路径和触发器。

然后创建一个Windows服务来观察此表并根据需要运行进程? 这样,您只需要在您需要的帐户下运行该服务。

这有点像调度程序,除了调度表在数据库表中?

也可以根据需要使用此应用启动和停止服务。

显然,asp.net应用程序需要安全。

答案 1 :(得分:-1)

我之前使用过类似的想法来管理我的Web服务器上的运行服务。您需要做的是模仿用户。看看我的博客,我发布了如何为服务做到这一点。它应该几乎完全相同。

http://dotnetchris.wordpress.com/2008/09/24/scheduled-task-status-start-stop-of-windows-service/

机器需要允许运行完整的信任代码,因为它使用外部调用,但我认为这显然不是问题,因为它是你的机器。

答案 2 :(得分:-1)

如果你不担心这个问题的安全问题,为什么不把它放在

<identity impersonate="true"
      userName="domain\user" 
      password="password" />

在web.config中更改整个Web应用程序的上下文