VC 32位(或64位)win7操作系统的注册表操作

时间:2022-09-04 14:16:14

*.bat文件:

@echo  "Win7系统下->右键->以管理员权限运行"
rem 切换到当前bat文件所在目录
cd /d %~dp0 
pause
rem 杀死所有以"myProg"开头的所有进程
taskkill /f /fi "Imagename eq myProg*"
rem 注册dll控件
regsvr32.exe  .\MyDll.dll

 

 

//////////////////////////////////////////////32位操作系统与64位的操作系统win7的注册表

64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项。许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然。

64 位版本 Windows 包含的默认 64 位版本注册表编辑器 (Regedit.exe) 可显示 64 位和 32 位的注册表项。WOW64 注册表重定向器为 32 位程序提供了对应于 32 位程序注册表项的不同注册表项。在 64 位版本的注册表编辑器中,32 位注册表项显示在以下注册表项下:

HKEY_LOCAL_MACHINE\Software\WOW6432Node
使用默认的 64 位版本注册表编辑器,可以查看或编辑 64 位和 32 位的注册表项和项值。要查看或编辑 64 位注册表项,必须使用 64 位版本的注册表编辑器 (Regedit.exe)。还可以使用 %systemroot%\Syswow64 文件夹中的 32 位版本注册表编辑器查看或编辑 32 位注册表项和项值。在 32 位版本注册表编辑器中执行任务的方式与 64 位版本注册表编辑器没有区别。要打开 32 位版本的注册表编辑器,请按照下列步骤操作:

1.单击“开始”,然后单击“运行”。
2.在“打开”框中,键入 %systemroot%\syswow64\regedit,然后单击“确定”。

注意:除非使用 -m 开关启动注册表编辑器的第二个实例,否则,必须先关闭 64 位版本的注册表编辑器,然后才能打开 32 位版本的注册表编辑器(反之亦然)。

////////////////////////////////////////////////

Windows7写注册表注意事项

1、注册表位置

Windows7 64bit系统的注册表分32 位注册表项和64位注册表项两部分。

在64bit系统下,通过regedit中查看到指定路径下的注册表项均为64位注册表项,而32位注册表项被重定位到:   HKEY_LOCAL_MACHINE\Software\WOW6432Node。

应用程序操作注册表的时候也分32bit方式和64bit方式。运行于64bit系统下的32bit应用程序默认操作32位注册表项(即被重定向到WOW6432Node下的子项);而64bit应用程序才是操作的直观子项。

比如,同在64bit系统下,使用如下代码访问注册表:

::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC "), 0, KEY_ALL_ACCESS, &hKey)

如果应用程序为32bit子系统,那么实际访问的注册表位置为:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Sobey\MPC(使用regedit工具软件对应的位置);

而如果应用程序为64bit子系统,那么实际访问的注册表位置将会是:

HKEY_LOCAL_MACHINE\SOFTWARE\Sobey\MPC(使用regedit工具软件对应的位置)。

2、程序编写

编程过程中,可以使用KEY_WOW64_64KEY和KEY_WOW64_32KEY明确的指定操作64位注册表项或者32位注册表项。例如,

在32bit子系统应用程序中,可以用如下方式明确指定访问64bit注册表项,程序代码:

::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC "), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey)

注意关键字KEY_WOW64_64KEY;

这种方式写入的注册表项将会确切的位于位置:HKEY_LOCAL_MACHINE\SOFTWARE\Sobey\MPC(使用regedit工具软件对应的位置)。

在64bit子系统应用程序中,可以用如下方式明确指定访问32bit注册表项,程序代码:

::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Sobey\\MPC\\Test"), 0, KEY_ALL_ACCESS | KEY_WOW64_32KEY, &hKey)

注意关键字KEY_WOW64_32KEY

这种方式写入的注册表项将会确切的位于位置:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Sobey\MPC(使用regedit工具软件对应的位置)。

3、特别提醒

上述说明只针对HKEY_LOCAL_MACHINE主键而言,HKEY_CURRENT_USER主键下没有类似情况;当访问HKEY_CURRENT_USER主键时,明确指定KEY_WOW64_64KEY和KEY_WOW64_32KEY标志也没有意义。

总之,尽可能使用HKEY_CURRENT_USER主键来保存用户配置吧。