c++ - Vista\Win7 中的模拟和注册表操作

标签 c++ winapi registry impersonation

我需要创建一个在非管理 session 中运行时有权访问 HKLM 的程序。我可以访问管理员凭据,因此模拟似乎是一种选择。Win32 调用的顺序是:

  1. 登录用户
  2. 模拟登录用户
  3. RegOpenKeyEx
  4. 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/

相关文章:

c++ - 在 while 循环中连接值出错

c++ - CORDIC 用于平方根

c++ - 库 c++ 的接口(interface)

c++ - 带有虚拟 COM 端口的 USB 串行设备 - 如果将 CreateFile() 与 USB 路径一起使用,ReadFile() 读取零字节

c++ - 在 Windows 中,SetCurrentConsoleFontEx 是否会更改控制台的字体大小?

c# - 更改所有管理员壁纸

c++ - 正则表达式每两个字符拆分字符串

C++程序内存计算

C# 循环遍历注册表以搜索包含特定文本的键