禁用特定进程的注册表访问(WinAPI)

时间:2012-06-16 22:58:11

标签: c++ c winapi

我有一个问题,我似乎无法找到答案,但我确信它已经存在。有没有办法可以禁用新创建的进程的注册表和文件访问?我正在使用Job对象(http://msdn.microsoft.com/en-us/library/windows/desktop/ms682409(v=vs.85).aspx),它表示要为每个新作业进程设置权限,并且在一些书中我已经读过可以控制注册表和文件访问等内容。

在寻找我的答案时,我看到我需要为诸如SE_BACKUP_NAME之类的东西(或其他任何东西)添加LUID,但这些特权常量似乎都没有反映出我想要的那种控制。所以我的确切问题是:我如何在作业中禁用新创建的进程的注册表/文件写访问权?

我正在尝试创建一个沙盒应用程序,顺便说一句。这样我就可以防止它在注册表中进行任何更改或在运行时编写任何文件。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

Windows在进程启动期间访问许多资源,因此如果您成功禁用了对文件系统和注册表的访问,则该进程将无法启动。

理想情况下,您希望在进程初始化完成后限制访问,但Windows没有为任意进程执行此操作的机制。 Chrome浏览器中的沙箱依赖于沙盒进程的协作。

documentation for the Chrome sandbox概述了Windows中可用的各种安全机制,并解释了它们在Chrome中的使用方式。如果您尝试沙箱自己的代码,这是一个很好的解决方案。

答案 1 :(得分:0)

我认为你不能完全禁用访问权限,因为很多susbsystems都依赖它(COM,shell,一些DLL初始化,调试等)另一种方法是允许访问,但是对于有限的沙箱可以做到使用integrity system。将其设置为low integrity将阻止大多数写访问,并由受保护模式IE使用。