为什么即使分配了正确的权限后仍然可能收到“访问被拒绝”错误?

为什么即使分配了正确的权限后仍然可能收到“访问被拒绝”错误?

我最近一直在进行服务器迁移,并清理一些克隆的 Windows 2008 服务器上的权限问题。我经常使用进程监控缩小权限问题并修复它们,然后恢复测试。

令我感到困惑的是,当我分配了适当的权限,然后再次运行测试时,对于刚刚为该目录或注册表项分配了完全控制权的同一个用户,仍然在 procmon 中收到相同的“访问被拒绝”错误,但失败了。

从技术上来说,这怎么可能呢?除了没有设置正确的 ACL 之外,为什么会返回 ACCESS DENIED?

在这个特定的麻烦中,我有一个 Active Directory 帐户,我们用它来运行需要能够跨多台服务器的服务,并且它在 HKEY_CLASSES_ROOT\Wow6432Node\CLSID 上不断收到 ACCESS DENIED 错误。我已三次检查此用户是否对此密钥具有完全控制访问权限,但这种情况仍然发生。

以下是来自 procmon 的详细信息:

Date & Time:    8/9/2011 5:13:27 PM
Event Class:    Registry
Operation:      RegOpenKey
Result:         ACCESS DENIED
Path:           HKCR\Wow6432Node\CLSID
TID:            5084
Duration:       0.0000073
Desired Access: Read

Description:    Event Alarm Service
Company:        Dorian Software Creations, Inc.
Name:           EvtAlarm.exe
Version:        6.0.0.148
Path:           C:\Program Files (x86)\Event Alarm\EvtAlarm.exe
Command Line:   "C:\Program Files (x86)\Event Alarm\EvtAlarm.exe"
PID:            5232
Parent PID:     616
Session ID:     0
User:           OUR\SpecialUser
Auth ID:        00000000:09af42e2
Architecture:   32-bit
Virtualized:    False
Integrity:      High
Started:        8/9/2011 5:13:27 PM
Ended:          8/9/2011 5:13:39 PM

编辑:感谢大家的反馈。我已经解决了我们的潜在问题,尽管我的问题仍然存在,因为我觉得我所做的并不是真正的解释,因此我不会将其作为官方答案发布。根据生产相关软件的公司的建议,我将相关服务帐户添加到本地管理员组,现在它可以成功启动,并且访问被拒绝错误也消失了。这对我来说仍然没有意义,因为权限(包括有效权限)显示此服务帐户应该有权访问被拒绝的注册表项...

答案1

最有可能的是,用户的令牌尚未重新生成。当用户登录/验证时,会为其生成一个包含所有权限的安全令牌。当权限发生更改时,用户需要使用本地 SAM 或域控制器重新生成其安全令牌。不过,这通常只是用户权限分配的问题,而不是对象权限的问题。

另一种可能性是拒绝优先于允许的概念。拒绝可能位于继承链的上层,并向下级联并导致权限问题。

答案2

我的应用程序也遇到了类似的问题。我的解决方案是禁用 UAC

相关内容