我有许多与IIS网络服务器在同一台机器上运行的实用程序。
我要做的是允许网页实例化可执行文件。如果我使用Process.Start(),该过程将启动,但显然与Web服务器的用户相同,因此无法与桌面交互。对于99%的应用程序,这不是问题。但是,我希望能够像特定用户(只有我一样)启动它们一样运行它们。
这更像是一个尝试,看看这是否可能比一个严肃的开发项目,所以我对方法比对目标更感兴趣。
理想情况下,如果我登录到盒子(几乎总是),那么它应该像我按照快捷方式一样运行。如果没有,启动应用程序并在我登录时将其连接到我的桌面将是完美的。如果在用户登录之前无法实现,我可以接受。
我知道安全方面的考虑因素,但通过以下方式缓解这些问题:
我用谷歌搜索了,但这似乎是一个相当不寻常的要求所以除了“不要以为你能做到”之外没有太多的信息 - 所以我想我会问这里是为了得到任何一个a)这样做的方法或b)对为什么不能这样做的合理解释。
如果它更简单,请将Web方面放在一边 - 如何在其他用户的安全上下文中启动进程并附加到其桌面(如果有的话)
提前感谢您提供的任何帮助和指示。
答案 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应用程序的上下文