我需要创建一个在非管理 session 中运行时有权访问 HKLM 的程序。我可以访问管理员凭据,因此模拟似乎是一种选择。Win32 调用的顺序是:
- 登录用户
- 模拟登录用户
- RegOpenKeyEx
- RegCreateKeyEx
key 在 XP/2003 上成功创建,在 Vista/Win7 上失败并显示“拒绝访问”。我以相同的默认域用户身份运行,并在每个场景中模拟相同的域管理员。 RegCreateKeyEx 正在生成“拒绝访问”,显然未创建 key 。
有人知道为什么会这样吗?
最佳答案
默认情况下,Windows Vista/7 上的管理员也没有对 HKLM 的写入权限,他们必须先提升权限。参见 Vista UAC: The Definitive Guide有关启动新流程的详细信息,因为您无法提升现有流程。
关于c++ - Vista\Win7 中的模拟和注册表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516730/