C# 启动没有IO权限的进程

C# 启动没有IO权限的进程,c#,c++,windows,security,C#,C++,Windows,Security,一个程序如何运行一个进程,而该进程只能使用专用于该进程的内存并返回一个值,而不能运行任何IO,包括没有文件系统访问、注册表访问等。关键是执行一些第三方代码并获得一个结果,而不存在任何安全/稳定性风险。类似于Process.RunSandboxed(processInfo) 我更喜欢C语言的东西,但任何东西都会有帮助的 (我发现了,但这似乎只适用于托管代码。)我认为您必须创建一个具有这些策略限制的新用户,然后从受限用户帐户开始该过程。我就是这样做的——那是很久以前的事了,但那时我找不到比这更优雅的

一个程序如何运行一个进程,而该进程只能使用专用于该进程的内存并返回一个值,而不能运行任何IO,包括没有文件系统访问、注册表访问等。关键是执行一些第三方代码并获得一个结果,而不存在任何安全/稳定性风险。类似于
Process.RunSandboxed(processInfo)

我更喜欢C语言的东西,但任何东西都会有帮助的


(我发现了,但这似乎只适用于托管代码。)

我认为您必须创建一个具有这些策略限制的新用户,然后从受限用户帐户开始该过程。我就是这样做的——那是很久以前的事了,但那时我找不到比这更优雅的了。最后,我使用了一个端口侦听器,该侦听器使用Task Scheduler从受限帐户运行,当我从常规帐户调用端口时,它将启动我想要的进程。这将取决于平台。你的目标是什么平台?@Thomas Windows 10 PCs。这就是你的意思吗?无法完成,不安全,不在Windows中。唯一现实的选择是在虚拟机中运行不受信任的进程。这是非常困难的,因为大多数系统对象都有安全描述符,至少允许所有用户进行读取访问。比如说,如果你想阻止
BadWare.exe
将你的浏览器书签传输到远程服务器,那么除了虚拟化之外,没有什么能真正阻止这一点,因为即使是精心设计的“匿名”帐户也有权做你想做的事情。Windows下有多种(应用程序)虚拟化技术(如Sandboxie),但操作系统中没有一种技术,除非您计算应用于UWP应用程序的沙盒。我认为您必须创建一个具有这些策略限制的新用户,然后从有限的用户帐户启动该过程。我就是这样做的——那是很久以前的事了,但那时我找不到比这更优雅的了。最后,我使用了一个端口侦听器,该侦听器使用Task Scheduler从受限帐户运行,当我从常规帐户调用端口时,它将启动我想要的进程。这将取决于平台。你的目标是什么平台?@Thomas Windows 10 PCs。这就是你的意思吗?无法完成,不安全,不在Windows中。唯一现实的选择是在虚拟机中运行不受信任的进程。这是非常困难的,因为大多数系统对象都有安全描述符,至少允许所有用户进行读取访问。比如说,如果你想阻止
BadWare.exe
将你的浏览器书签传输到远程服务器,那么除了虚拟化之外,没有什么能真正阻止这一点,因为即使是精心设计的“匿名”帐户也有权做你想做的事情。Windows下有各种(应用程序)虚拟化技术(如Sandboxie),但操作系统中没有一种技术,除非您计算应用于UWP应用程序的沙箱。