我最近一直在进行服务器迁移,并清理一些克隆的 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