【发布时间】:2009-09-02 22:40:09
【问题描述】:
我的桌面计算机上运行了一个程序,它使 WCF 服务可用。这是我以普通用户身份登录时运行的常规 Windows 窗体应用程序。
我把 WCF 接口放进去,这样我就可以从外部网页看到程序的状态。这很好用,我可以看到正在运行的程序的状态,甚至可以根据需要进行更改。
我唯一不能做的就是启动程序。如果我访问网页并且程序未运行,我希望能够启动它。一个简单的 Process.Start(programEXE) 是不够的,因为当程序启动时,它不在桌面上,我看不到它,尽管它确实显示在任务管理器中。
我尝试创建凭据并使用这些凭据启动程序,但它以非常模糊的“程序无法启动”错误退出,或者以我的凭据启动但仍未显示在桌面上。在后一种情况下,我在我的名字下的任务管理器中看到它,但看不到实际的程序。
那么,如何在服务器上启动一个程序,在已登录用户的桌面上可见(只有一个用户并且该用户始终处于登录状态)?
另外,我可以做些什么来确保这不会成为安全漏洞?我的一个想法是在它自己的虚拟目录中运行launcher.aspx,该用户ID 只对program.exe 所在的一个目录具有读取权限,并且没有其他读取或写入权限。还有其他建议吗?
最后,明确一点:我不是试图在用户的计算机上启动任何东西。单击“启动程序”链接应该会在网络服务器上而不是在客户端计算机上启动一个程序,并且该程序应该对 服务器上的登录用户可见强>。
【问题讨论】:
-
另一条评论:这是我自己的一次性产品,可能永远不会安装在我自己的计算机上。
标签: asp.net process desktop credentials