在 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 {
}

最新文章

  1. 如何快速开发SPA应用
  2. 编写atoi库函数
  3. 在eclipse中使用maven创建springMVC项目
  4. 设置阿里云maven中央仓库的settings.xml
  5. PHP json_decode 函数解析 json 结果为 NULL 的解决方法
  6. 一个采用python获取股票数据的开源库,相当全,及一些量化投资策略库
  7. 向linux内核加入系统调用新老内核比較
  8. Poj 3117 World Cup
  9. 基于 Java 2 运行时安全模型的线程协作--转
  10. Ubuntu环境变量——系统变量和用户变量
  11. C# 程序只能执行一次
  12. Ubuntu无法访问windows分区
  13. Ubuntu Server无线上网
  14. 【Linux】常见基础命令之系统操作
  15. 用 PLSQL 创建新用户及导入 dmp
  16. centos7安装rabbitmq3.7.9
  17. linux安装redis-4.0.2
  18. centos7配置vsftpd
  19. C++ 第四课:ASCII 码表
  20. AGC006C Rabbit Exercise

热门文章

  1. LeetCode OJ:Min Stack(最小栈问题)
  2. 2017北京赛区H题
  3. 剑指offer--48.机器人的运动范围
  4. 理解 uncaughtException 和 domain 和 try catch 区别
  5. PostgreSQL CheckPoint设置(转)
  6. Django项目的ORM操作之--模型类数据查询
  7. Shell 单行注释和多行注释
  8. [Math]PHI, the golden ratio
  9. HDU1556 线扫
  10. js数组简单总结