我有一个在.NET和IIS上运行的Web应用程序,我需要启动一个本机进程。但是,此过程不是完全可信的,因此我需要限制其对系统的访问,特别是:


阻止所有网络访问
仅访问系统中的某些目录(可在运行时配置)


我不能使用的东西:


.NET AppDomains(不适用于本机可执行文件)
以独立用户身份运行(IIS没有以其他用户身份运行的权限,并且我还没有找到任何方法来授予IIS这些权限)
进程中的UAC(目录访问必须在运行时可配置,并且UAC似乎不允许这样做)


有人知道我可以做到这一点的方法吗?

最佳答案

根据过程的确切作用,一种选择是让IIS发出信号通知该过程正在运行,而不是直接运行。

例如,您可以创建一个简单的Windows服务,该服务从IIS接收信号(通过写入队列,在数据库中设置标志或Windows上可用的任何IPC机制),然后管理本机进程的生命周期(例如使用Runas启动它,等待完成,然后将结果发送回IIS)。

如果本机进程可以转换为Windows服务,则可以避免使用中间的“代理” Windows服务。

10-07 19:38
查看更多