我使用的程序的行为方式让我很不喜欢。即使以没有管理员权限的用户身份运行,它也可以写入注册表。我认为我没有什么可以描述的了,那么,如何限制程序调用与注册表项/字符串编辑相关的 API 函数?有没有广泛接受的方法可以帮助我实现我的目标?我的问题的答案是否记录不全,或者我只需点击几下鼠标就可以在 Microsoft 网站上找到答案?
答案1
如果拒绝访问其注册表项,该程序肯定会出现故障。
如果您不信任此程序,请使用以下命令将其与注册表隔离 沙盒:
Sandboxie 使用隔离技术将程序与底层操作系统分开,防止对安全存储在硬盘上的个人数据、程序和应用程序发生不必要的更改。
该程序可以通过这种方式修改任何它想要修改的内容,但 Sandboxie 会重定向所有修改,以免影响系统的其余部分。
答案2
如何限制程序调用与注册表项/字符串编辑相关的 API 函数?
Windows 安全模型是专为处理这种情况而设计. 每个注册表项都有一个访问控制列表 (ACL),用于指定受托人(例如用户帐户)以及他们被允许对密钥采取的操作(例如读取)。
要利用此功能来限制您的应用程序,请创建一个非管理员用户帐户,并始终在该用户的上下文中运行该应用程序。您可以使用 Windows以其他用户身份运行以这种方式执行应用程序的能力,而无需实际使用受限帐户登录。
默认情况下,标准用户仅对注册表的系统范围部分(例如 HKLM 分支)具有读取权限,并且只能对其自己帐户的 HKCU 分支进行更改。
如果您希望进一步限制帐户的注册表权限,则应修改注册表的相应分支以指定用户帐户所需的权限。您可以使用 Microsoft 的进程监控查看其访问哪些注册表路径以及可能需要修改的权限。
需要记住的是,几乎所有 Windows 应用程序都需要访问注册表才能正常运行。全面阻止此类访问可能会阻止程序执行其预期功能。
更多信息: