我写了一堆单元测试来覆盖windows注册表的读/写。他们使用CRegKey ATL api。
这些在我的XP Pro桌面计算机上运行良好,但是当测试在构建计算机上运行时 - 一个Windows 2008 x64服务器 - 当尝试通过{{创建密钥时,测试失败并且ERROR_ACCESS_DENIED
3}}
登录到构建计算机的用户属于管理员组。
Google提供了一个如何在记事本中创建注册表的列表,msdn在点击链接时不断给我丢失页面。
我需要知道的是我需要做什么才能让测试在服务器上运行时通过?我想它需要安全属性但是我从来没有钻研过这个我所以没有知道从哪里开始。任何帮助将不胜感激。
答案 0 :(得分:1)
仅以管理员身份登录是不够的;您的程序需要以管理权限运行(即使用清单)。
答案 1 :(得分:1)
修改或创建全局注册表项的程序的日子已经结束。它仍然适用于您的XP机器,因为您以管理员身份登录。 Vista,Win7和Windows 2008都有UAC来防止任何人(即恶意软件)弄乱注册表,即使使用管理员帐户登录也是如此。
您可以向程序添加清单以调用UAC提示,但这对于单元测试来说完全不实用。重新编写单元测试以写入HKEY_CURRENT_USER配置单元。同样的考虑可能适用于您编写测试的程序。