office 插件开发 -- 64位系统注册表问题


 1 HKLM
2 {
3 NoRemove SOFTWARE
4 {
5 NoRemove Microsoft
6 {
7 NoRemove Office
8 {
9 NoRemove Word
10 {
11 NoRemove Addins
12 {
13 ForceRemove WordClientDemo.WordAddinDemo
14 {
15 var ‘FriendlyName‘ = s ‘WordAddinDemo‘
16 var ‘LoadBehavior‘ = d ‘3‘
17 var ‘Description‘ = s ‘WordAddinDemo‘
18 var ‘CommandLineSafe‘ = d ‘0‘
19 }
20 }
21 }
22 }
23 }
24 }
25 }

在32位系统中这样写注册表没有问题,但是在64位系统中不行。

64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项。

32
位注册表项显示在以下注册表项下:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

也就是说32位的程序是从上面路径读取注册表值的,所以上述代码应改成


 1 HKLM
2 {
3 NoRemove SOFTWARE
4 {
5 NoRemove Wow6432Node
6 {
7 NoRemove Microsoft
8 {
9 NoRemove Office
10 {
11 NoRemove Word
12 {
13 NoRemove Addins
14 {
15 ForceRemove WordClientDemo.WordAddinDemo
16 {
17 var ‘FriendlyName‘ = s ‘WordAddinDemo‘
18 var ‘LoadBehavior‘ = d ‘3‘
19 var ‘Description‘ = s ‘WordAddinDemo‘
20 var ‘CommandLineSafe‘ = d ‘0‘
21 }
22 }
23 }
24 }
25 }
26 }
27 }
28 }

更具体可以参考:

http://blog.csdn.net/pbymw8iwm/article/details/6931120

office 插件开发 -- 64位系统注册表问题,布布扣,bubuko.com

时间: 2024-08-08 09:40:34

office 插件开发 -- 64位系统注册表问题的相关文章

C# 64位系统 注册表的读写

64位系统,读取时是要有区别的,写入时没有问题.这里的代码时通用的,已经内部判断当前系统的位数. 1 /// <summary> 2 /// 注册表 3 /// </summary> 4 public class RegistryKey64 5 { 6 #region 静态 7 static IntPtr GetHiveHandle(RegistryHive hive) 8 { 9 IntPtr preexistingHandle = IntPtr.Zero; 10 11 IntP

64位读取注册表与32位的区别

有一个读取注册表信息的程序  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkeystring , 0, KEY_READ, &hKey) == ERROR_SUCCESS)/ ,在32位下完全正常,但是在64位返回值正确,但就是读不到东西.后来单步发现读不到东西,就搜64位读注册表失败,发现需要加 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkeystring , 0,KEY_READ|KEY_WOW64_64KEY, &am

c#_自动化测试 (五) 读写64位操作系统的注册表

非Web程序(桌面程序)的设置一般都存在注册表中. 给这些程序做自动化测试时, 需要经常要跟注册表打交道. 通过修改注册表来修改程序的设置. 本章介绍如何利用C#程序如何操作注册表, 特别是如何操作64位操作系统的注册表. 阅读目录 自动化测试经常需要修改注册表 Windows注册表简介 C#修改注册表 32位机器和64位机器注册表的区别 C#程序访问64位操作系统的注册表 自动化测试经常需要修改注册表 很多系统的设置(比如:IE的设置)都是存在注册表中. 桌面应用程序的设置也是存在注册表中.

win7的64位系统注册ocx控件

 win7的64位系统注册ocx控件 简介:前两天系统出问题了,导致开发环境很多插件需要重装, 当我针对winform的几个错误,安装控件解决时,就出现了错误, 始终装不上,如图: 解决方案: 1.首先复制 XXXX.OCX文件到"C:\Windows\SysWOW64"目录. (XXXX.OCX 是你准备注册的OCX控件) 2.在C:\Windows\sysWOW64 目录中找到cmd.exe的程序 3.右键单击该程序选择"管理员身份运行" 4.进入cmd D

64位系统注册32位的directshow filter文件

在SERVER2008上注册自己写的directshow filter 的dll或者ax文件的时候总是提示 [Window Title] RegSvr32 [Content] 模块".\ball.dll"加载失败. 请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的 .DLL 文件是否有问题. 找不到指定的模块. [确定] 经过查阅相关资料,发现必须使用C:\Windows\SysWOW64文件夹下的cmd,然后输入regsvr32 F:\MyRtspFilter\ba

32位程序访问64位系统上的Windows注册表

今天在工作的过程中遇到个奇怪的为问题,就是通过c#获取注册表键值的问题,一般都比较简单: string SQLPath = string.Empty; RegistryKey hkml = Registry.LocalMachine; RegistryKey MSSQLServerKey = hkml.OpenSubKey(@"SOFTWARE\MICROSOFT\MSSQLServer"); if (MSSQLServerKey != null) { string[] keys =

关于32位程序在64位系统下运行中需要注意的重定向问题(有图,很清楚)

0x00 前言 最近学习了[email protected]的文章<Persistence Architecture Matters>,恰巧解决了我之前遇到过的一个问题,理清了文件和注册表重定向中需要注意的细节 大家在学习的过程中难免也会碰到,所以在此分享一下. <Persistence Architecture Matters>的链接:https://labs.mwrinfosecurity.com/blog/persistence-architecture-matters/ 0

使用JRegistry来操作window系统注册表

在java中使用jdk自带的Preferences具有很大的局限性,无法访问全局的注册表信息,需要获取全部的注册表信息还需要依靠第三方的工具.在这里使用的是JRegistry,我们可以从这里http://sourceforge.jp/projects/sfnet_jregistry/ 获取到jar包和开发文档. 在开发需要把对应的 dll文件拷贝到包路径下面,提供32位和64位两种(不过64位的在使用的时候老是加载不上,64位系统+64位的Eclipse+64位jdk还是需要32位的dll文件,

C# 32位程序在64位系统下注册表操作

在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using