在 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. CMDB开发(需求分析)

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

  2. ThinkPHP 连接数据库

    今天在配置连接Mysql 时出现了bool(false)的提示,仔细修改了mysql的密码,还是不对,发现问题应该数据库本身设置了前缀tb_本身的拼写错误和注释掉了 'DB_PREFIX'=>' ...

  3. The Interview Outline

    ************************* 一.基础部分************************* 1.1 常用数据类型 - 字符串 split/strip/replace/find/ ...

  4. 微信红包算法TEST

    1.基本算法 设定总金额为10元,有N个人随机领取:N=1 则红包金额=X元: N=2 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数 第二个红包=10-第一个红包金 ...

  5. React-Native基础_1.初识React-Native项目

    1.初识React-Native项目 'use strict'//使用严格模式 import React, { Component } from 'react';//导入React的Component ...

  6. [IC]Lithograph(0)半导体制造的基本过程

    1. 晶圆片 Wafer 晶圆(Wafer)是指硅半导体集成电路制作所用的硅芯片,由于其形状为圆形,故称为晶圆.晶圆是生产集成电路所用的载体,一般意义晶圆多指单晶硅圆片. 半导体行业从图1到图2,是一 ...

  7. storyboard出口回退问题

    问题 直接在Main.storyboard拖动添加到出口的时候总是出一些不知名的错误.猜想可能是swift4又TM换了新特性(不过好喜欢啊哈哈哈哈) 解决 其实可以先拖动添加@IBAction函数到代 ...

  8. 求整数A和B的二进制表示中有多少位是不同?

    如果有题目要求整数A和B二进制表示中多少位是不同的? 那我们要先考虑一个unsigned类型中变量1的个数?我们可以考虑简单的移位运算,向右移位,我们进行判断如果不是1直接丢掉,使用&运算符即 ...

  9. Java并发--进程与线程由来

    下面是本文的目录大纲: 一.操作系统中为什么会出现进程? 二.为什么会出现线程? 三.多线程并发 一.操作系统中为什么会出现进程? 说起进程的由来,我们需要从操作系统的发展历史谈起. 也许在今天,我们 ...

  10. BZOJ2588 SPOJ10628 Count on a tree 【主席树】

    BZOJ2588 Count on a tree 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中l ...