0

我写了一堆单元测试来覆盖 Windows 注册表的读/写。他们使用CRegKey ATL api。

这些在我的 XP Pro 台式机上运行良好,但是当测试在构建机器上运行时 - Windows 2008 x64 服务器 -ERROR_ACCESS_DENIED尝试通过Create创建密钥时测试失败。

登录到构建机器的用户属于管理员组。

谷歌列出了如何在记事本中创建注册表的列表,当我单击链接时,msdn 不断给我丢失的页面。

我需要知道的是我需要做什么才能使测试在服务器上运行时通过? 我想它需要安全属性,但我从未深入研究过,所以我不知道从哪里开始。任何帮助,将不胜感激。

4

2 回答 2

1

以管理员身份登录是不够的;您的程序需要以管理权限运行(即使用清单)。

于 2010-08-10T13:55:21.887 回答
1

程序修改或创建全局注册表项的时代已经结束。它仍然可以在您的 XP 机器上运行,因为您以管理员身份登录。Vista、Win7 和 Windows 2008 具有 UAC 以防止任何人(即恶意软件)破坏注册表,即使使用管理员帐户登录也是如此。

您可以在程序中添加清单以调用 UAC 提示符,但这对于单元测试完全不切实际。重新编写单元测试以改为写入 HKEY_CURRENT_USER 配置单元。同样的考虑可能适用于您为其编写测试的程序。

于 2010-08-10T14:21:07.850 回答