在 win7 64位的系统中,为了将程序做成绿化版(单EXE文件),一些设置准备放到 regedit(注册表)中。

测试时发现网上的 demo 可以读,但写的值调试不报错,相应位置却不存在,困扰了许久,终于在一篇贴子找到原因:

转自:http://www.bathome.net/thread-30783-1-1.html


相信大家在WIN7或者win8下使用批处理时都会遇到这个问题,在使用32位应用程序的时候注册表操作时会被重定向到Wow6432Node,,特别是bat to exe批处理转Exe程序,某些注册表总是是会写入到Wow6432Node下面,
比如
HKEY_LOCAL_MACHINE\SOFTWARE
会被重定向到
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
造成某些注册表操作不能被执行到正确位置。
这个问题也是困扰了我很久的时间,之前找过各种办法,一直在用的是用64位7z制作自解压解决的,非常不方便。
今天就为大家带来终极解决办法,无需任何第三方程序。
这是我无意中找到的http://foolishfish.blog.51cto.com/3822001/1372779
代码如下,其实就是在 reg add 命令后面加上 /reg:64开关就可以了
/reg:64 /reg:32这两个开关隐藏的可真够深的,百度,google搜索竟然搜索不到。
经过半个小时的测试发现,不管是32位cmd.exe还是64位cmd.exe调用批处理操作注册表,只要在reg add命令加上/reg:64开关或者/reg:32开关就可以指定操作的注册表是32位的还是64位的。
也就是说只要加上/reg:64开关不管是32位cmd.exe还是64位cmd.exe注册表写入或删除操作都最终会是64位的注册表
           只要加上/reg:32开关不管是32位cmd.exe还是64位cmd.exe注册表写入或删除操作都最终会是32位的注册表
/reg:32 /reg:64测试系统Windwos 8.1 64位企业版,其它系统请自行测试,而且只测试了32位cmd.exe和64位cmd.exe,并没有测试用bat转exe后的程序,我想应该也是可用的,请大家测试测试。
经测试 regedit /s 命令加上此开头无效。
以下是实例:

echo %PROCESSOR_ARCHITECTURE%
if %PROCESSOR_ARCHITECTURE%==x86 (set reg3264= /reg:64) else set reg3264=
reg add "HKLM\SOFTWARE\Microsoft\Internet Explorer\1test专用" /v "测试" /t reg_sz /d "测试" /f%reg3264%
pause
REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\1test专用" /f%reg3264%

C#代码参考:http://www.cnblogs.com/TaiYangXiManYouZhe/p/5087248.html

RegistryKey key;
if (Environment.Is64BitOperatingSystem) {
key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
}
else {
key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
}
try {
RegistryKey software = key.OpenSubKey("software\\test");
msg = (string)software.GetValue("info");
}
catch {
}

[转][c#]注册表经验集的更多相关文章

  1. windows注册表学习笔记

    注册表,想起来了就学学,方便操作.无需把它当成重要学问,今日就学一波,作为了解. 一.注册表清理脚本 主要是删除临时文件,旧文件.并不能够删除无效的键 @echo off del/f/s/q %sys ...

  2. S3c2440A WINCE平台HIVE注册表+binfs的实现

    今天最大的收获莫过于把binfs和hive注册表同时在三星的平台上实现了,这可是前无古人啊(只是看到好多哥们说找不到三星的HIVE资料),哈哈哈.怕今天的成果日后成炮灰,还是写下来比较好,要养成这样的 ...

  3. 从注册表清理 IE10,IE11 用户代理字符串(UserAgent)中的垃圾信息

    某一天,我发现我的 IE User Agent 字符串里面竟然含有刷机大师.百度浏览器等许多垃圾,国货流氓见怪不怪了. 微软自家的.NET CLR也占据了一大片,看着也不爽. 决定清理一下,但是却没找 ...

  4. 分散的配置文件VS集中的注册表

    假设有这样一个工程,是这样设计的: 1整个软件.服务被切分为 由若干独立的多道程序(多个进程/微服务): 2 这些多道程序只是“机制mechanism”,而“策略strategy”写在各自用到的配置文 ...

  5. 我的天$删除注册表$安装mysql最后一步不能启动服务的解决办法

    我是照着参考资料一步一步删除的,只是我的Win7 64位的电脑比较犟,硬是要我重启电脑才能成功!强烈建议最好是重启电脑再装! 使用MySQL都有过重装的经历,要是重装MySQL基本都是在最后一步通不过 ...

  6. Docker 开源项目之 registry - 部署 registry (注册表)服务器

    原文地址 在部署 registry 之前需要现在主机上安装 Docker.registry 实际上就是运行在 Docker 中的 registry 镜像的实例. 本主题提供关于部署和配置 regist ...

  7. .NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

    目录 1.简介 1.1什么是应用程序配置数据? 1.2问题 1.3介绍Nini 2.入门 2.1一个简单的例子 2.2默认值 2.3设置.保存和删除键 2.4添加和删除配置 2.5键值扩展 3.高级主 ...

  8. 【一起学源码-微服务】Nexflix Eureka 源码八:EurekaClient注册表抓取 精妙设计分析!

    前言 前情回顾 上一讲 我们通过单元测试 来梳理了EurekaClient是如何注册到server端,以及server端接收到请求是如何处理的,这里最重要的关注点是注册表的一个数据结构:Concurr ...

  9. Win.ini和注册表的读取写入

    最近在做打包的工作,应用程序的配置信息可以放在注册表文件中,但是在以前的16位操作系统下,配置信息放在Win.ini文件中.下面介绍一下Win.ini文件的读写方法和注册表的编程. 先介绍下Win.i ...

随机推荐

  1. LeetCode OJ:Tenth Line(文件第十行)

    How would you print just the 10th line of a file? For example, assume that file.txt has the followin ...

  2. Pavilion M4-1016TX 加装固态硬盘(SSD)+UEFI+GPT安装WIN8.1

    折腾了一天,终于将电脑加上SSD和装上系统,记录下,方便后面忘记使用. 步骤: 1.Pavilion M4-1016TX内置了mSata的接口,大小是全高的.ssd支持大小官方说法是测试过32g的,目 ...

  3. SpringInAction--Bean参数的自动注入

    前面我已经学过了,将一个bean引用注入到另一个bean的属性或构造器参数中,这边指的是将一个对象与另一个对象进行关联. 我们学过的方法是在创建的时候根据new对象的时候,注入参数,如下: @Bean ...

  4. DOM2级事件处理程序

    DOM2级时间定义了两个方法:addEventListener() 和removeEventListener() 他们都接受3个参数:1)要处理的事件名   2)作为事件处理程序的函数 3)一个布尔值 ...

  5. Mac怎么快速创建便签和发送附件的邮件

    1.如何快速创建便签        在Mac的任意界面选中文字:shift+command+y 就能创建便签2.如何快速发送附件的邮件(网页界面)        在Safari网页界面 command ...

  6. TCP/IP 必知必会的十个问题

    本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. 一.TCP/IP模型 TCP/IP协议模型(Transmission Control Protoc ...

  7. 套接字中的recv与send的注意事项

    recv() 特征* 如果连接的另一端断开连接,则recv立即返回空子串* recv是从接受缓冲区取出内容,当缓冲区为空则阻塞* recv如果一次接受不完缓冲区内容,下次会继续接收 send() 特征 ...

  8. MySQL中的锁理解

    1.目的:解决客户端并发访问的冲突问题 2.锁的分类 1.锁类型 1.读锁(共享锁) 查询(select):加读锁之后,别人不能更改表记录,但是可以进行查询. 2.写锁(互斥锁,排他锁) 更新(upd ...

  9. cocos studio pageview看不到indicator指示点

    发现如果在cocos studio里操作给PageView创建页面元素时,即使setIndicatorEnabled为true也看到下方的指示点,必须调用addWidgetToPage或者insert ...

  10. kettle连接oracle出现Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)

    jdbc驱动,下载jdbc14.jar文件放入   pdi-ce-5.3.0.0-213\data-integration\libswt\win64里 之后重启kettle即可 jdbc14.jar文 ...