用NSIS制作安装程序,在win7 32位机上测试没问题,而在64位上以下的注册表值一直写入不成功,求大神指点,PS:要写入的键是可读可写的。困惑很久了没找到原

alanfenghuilu 2015-10-14 12:27:47
比较急 在线等
改写的键值如下:
WriteRegStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}" "" ""
WriteRegStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}" "AppId" ""
WriteRegExpandStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}" "LocalizedString" ""
WriteRegDWORD HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\Elevation" "Enabled" 00000000
WriteRegExpandStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\InProcServer32" "" ""
WriteRegStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\InProcServer32" "ThreadingModel" ""
...全文
477 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2015-11-20
  • 打赏
  • 举报
回复
64 位系统有个 32 位子系统,32 位程序访问的注册表: HKEY_LOCAL_MACHINE\SOFTWARE (64 位注册表) 时,实际被重定向到访问到: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node (32 位注册表) 同时,HKEY_CLASSES_ROOT 也受影响,分别为:HKEY_CLASSES_ROOT、和 HKEY_CLASSES_ROOT\Wow6432Node。 如果只是 32 位和 64 位注册表的问题,楼上已经解答了,NSIS 中使用:SetRegView 64 切换到 64 位注册表访问,SetRegView 32 切换回 32 位。当然,访问 HKLM 会被重定向到 VirtualStore 还和是否嵌入 manifest 有关系,是否能写入 HKLM 还和权限有关系。如果 NSIS 中需要指定管理员权限,需要用 RequestExecutionLevel admin。在编程中,RegOpenKeyEx 需要指定 KEY_WOW64_64KEY 或 KEY_WOW64_32KEY 权限位。 关于 64 位注册表,具体看我的博文:http://www.cnblogs.com/jiake/articles/4956218.html
panda_an 2015-11-19
  • 打赏
  • 举报
回复
引用 楼主 u011702775 的回复:
比较急 在线等 改写的键值如下: WriteRegStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}" "" "" WriteRegStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}" "AppId" "" WriteRegExpandStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}" "LocalizedString" "" WriteRegDWORD HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\Elevation" "Enabled" 00000000 WriteRegExpandStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\InProcServer32" "" "" WriteRegStr HKCR "CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\InProcServer32" "ThreadingModel" ""
目标系统是X64的话,需要添加SetRegView 64语句才能访问注册表。
alanfenghuilu 2015-10-21
  • 打赏
  • 举报
回复
看来这个问题 大家都不感兴趣啊 算了 结贴,用了另外其他方案实现
alanfenghuilu 2015-10-14
  • 打赏
  • 举报
回复
问题入题: 用NSIS制作安装程序,在win7 32位机上测试没问题,而在64位上以下的注册表值一直写入不成功

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧