用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" ""
...全文
478 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位上以下的注册表值一直写入不成功
NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩,它是一个免费的 Win32 安装、卸载系统,采用了简洁高效的脚本方式。它本来是一个由 Nullsoft 创建并用于作为 Winamp 及其插件发布的系统,但现已被上百个应用程序所应用,作为它们进行程序发布的工具。 NSIS 创建的安装程序可以进行安装、卸载、设置系统设置、解压文件等等。几乎可以做所有事情。因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言——但其仅设计用来创建安装程序。 此增强版除了主程序的翻译之外还把主要的文档作了翻译并修正了官方版本里简体中文语言习惯用语不合适之处。单纯的使用脚本来编安装程序对于大多数人来说不仅困难而且容易出错,为此,增强版里集成了一个相当好用的脚本编辑器 - VNISEdit。只需要根据向导就能轻松的做出很酷的安装程序,甚至,你还可以在向导里给你的安装程序添加启动画面、让你的安装程序在安装过程中播放音乐,而这,只需要点几下鼠标即可。除此之外,VNISEdit 附带的注册表转换插件还可以把 .reg 文件一次性的转换为 NSIS 脚本,补丁制作向导可以一次性地为你生成体积超小的补丁升级程序。此增强版还在官方版本的基础上集成了一些有用的插件,比如 FindProc 可以根据可执行文件名查找进程是否在运行,这在制作补丁程序或者是汉化包时非常有用。由于各个组件在使用时各自独立,所以强烈推荐安装全部组件。
NSIS安装包制作教程 分为三个目录:基础,插件,脚本 NSIS System 插件 NSIS VPatch 3.1插件 NSIS InstallOptions 2 插件 NSIS Modern UI(新式用户界面)插件 NSIS的Modern UI插件 NSIS里特殊符号的表达方法 两组件互斥 NSIS 常用小问题合集 资源替换式的美化包制作方式代码 安装完毕后如何刷新文件关联 教你如何编程调用 NSIS 的插件 NSIS安装程序概要 实现 NSIS 自定义页面中的控件操作代码 如何使用NSIS实现多目录安装设置 如何用NSIS在加入注册表NSIS 制作自己的安装程序 bluewind 的 wmp9 nsis安装脚本 NSIS安装脚本简明教程 取得winamp的NSIS脚本的教程 迅雷5.7.3.389 AYU增强版的安装脚本 NSIS制作迅雷安装的脚本 迅雷5.7.2.371 DDR1.5版去广告版源代码说明 NSIS删除安装程序自身 帮助文件中关于静默安装的说明 NSIS实现静默安装的两种方法 nsis的附加任务代码 关于 NSIS 注册表问题 少轻狂制作的Windows优化大师的安装脚本 aipc编nsis极点安装脚本 官方 NSIS 插件全集 全方位掌握NSIS的使用 NSIS语言里怎样安装一个.inf文件? 如果要关联某个文件给程序应该怎么做? 如何避免显示解压缩进度框? 关于检测操作系统的问题 在结束页面添加运行程序选项 NSIS的botton二选一如何实现? NSIS灵活应用用逻辑库 NSIS调用inf安装驱动后的卸载问题 NSIS的组件互斥代码 在NSIS中如何禁止一个组件组的父项的点击事件 关于打破 NSIS 的 8192 字节限制的更简单方法 NSIS 自定义页面结合组件选择安装 一个关于组件跟自定义页面的控制问题 如何把安装的卸载程序放到其他目录

24,854

社区成员

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

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