我有一个在 .NET 和 IIS 上运行的 Web 应用程序,我需要启动一个 native 进程。但是,这个进程不是完全可信的,所以我需要限制它对系统的访问,具体来说:
- 阻止所有网络访问
- 只能访问系统中的特定目录(可在运行时配置)
我不能使用的东西:
- .NET AppDomains(不适用于 native 可执行文件)
- 以独立用户身份运行(IIS 没有以不同用户身份运行的权限,而且我还没有找到任何方式授予 IIS 这些权限)
- 进程上的 UAC(目录访问必须在运行时可配置,而 UAC 似乎不允许这样做)
有谁知道我可以实现这一点的方法吗?
最佳答案
根据进程具体执行的操作,一种选择是让 IIS 向进程发出运行信号,而不是直接运行它。
例如,您可以创建一个简单的 Windows 服务,它从 IIS 接收信号(通过写入队列、在数据库中设置标志或 Windows 上可用的任何 IPC 机制),然后管理该服务的生命周期 native 进程(启动它,例如使用 Runas,等待完成,将结果发送回 IIS)。
如果 native 进程可以转换为 Windows 服务,则可以避免中间“代理”Windows 服务。
关于c# - 如何在 .net 和 IIS 中启动具有受限权限的 native 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21004892/