Windows 注册表

<1>64位操作系统上的注册表

<2>文件系统重定向

<3>UAC

<4>注册表重定向

<5>SysWoW64

<6>注册表存放位置

<7>注册表跟环境变量

<1>64位操作系统

在64位的操作系统中有64位版本的注册表编辑器以及32版本的注册表编辑器,64版本的注册表在C:\Windows\regedit.exe,32位版本的在C:\Windows\SysWow64\regedit.exe。

注册表中的内容主要分为系统配置文件,用户配置文件。

通过cmd打开注册表编辑器的方法

运行:Regedit(这个表示的是64位的注册表编辑器)

运行:%windir%\SysWOW64\regedit或者%systemroot%\syswow64\regedit(这个表示32位的注册表编辑器)

默认情况下只能打开一个注册表编辑器,如果要打开多个注册表编辑器的话,需要在命令后面加入参数 m,如:%systemroot%\syswow64\regedit -m

<2>文件系统重定向

%windir%\System32文件夹是为64位的应用程序保留的,多数Dll文件并没有在其创建64位的版本时候改变名字,因此32位版本的dll被存储在一个不同的文件夹中。WOW64通过文件系统重定向来隐藏这一不同。

通常,当一个32位的应用程序试图访问%windir%\System32文件的时候,访问被重定向到%windir%\SysWOW64。访问%windir%\lastgood\system32的时候被重定向到%windir%\lastgood\SysWOW64。访问%windir%\regedit.exe被重定向到%windir%\SysWOW64\regedit.exe。

如果访问会导致系统显示UAC提示,重定向不会发生。取而代之的是,64位版本的所请求的文件的启动。为了避免这个问题,可以指定SysWOW64文件目录以避免重定向并确保访问的32位版本的文件。或用管理员权限来运行32位应用程序,从而不显示UAC提示。

<3>UAC

UAC是 useraccount control(用户账户控制)的缩写,是微软在windows Vista 和win7中引用的新技术,主要功能是是进行一些影响系统安全的操作时候会自动的触发UAC,用户确认后才能继续执行。

大部分的恶意软件、木马病毒、广告插件在进入计算机时都会有如:将文件复制到Windows或Program Files等目录、安装驱动、安装ActiveX等操作,而这些操作都会触发UAC。能够触发UAC的操作包括:修改Windows Update配置;增加或删除用户帐户;改变用户的帐户类型;改变UAC设置;安装ActiveX;安装或卸载程序;安装设备驱动程序;修改和设置家长控制;增加或修改注册表;将文件移动或复制到Program Files或是Windows目录。

<4>注册表重定向

创建键KEY_LOCAL_MACHINE\software\vc++此时打开64bit的注册表会在KEY_LOCAL_MACHINE\SOFTWARE\Wow6432node中看到vc++键。如果通过32bit版本的注册表打开,将会在KEY_LOCAL_MACHINE\SOFTWARE中找到vc++键。

<5>SysWow64

SYsWow64 是 Windows 32bits onWindows 64bits的缩写,是个Windows操作系统的子系统,64位的操作系统运行32位的程序都是通过这个子系统的。

<6>注册表存放位置

配置单元是注册表中的项,子项的逻辑组合,它提供了备份注册表中数据的支持文件。每一个新的用户登录到计算机时,一个新的配置单元就会为该用户而被创建,配置单元是基于跟用户属性相关的单独文件。这就是所谓的用户属性配置单元。用户的配置单元包含与用户的应用程序设置,桌面环境,网络连接和打印机特定的注册信息。用户配置文件配置单元都位于HKEY_USERS键。

注册表文件有以下两种格式:标准的和最新的。标准格式是它也支持更高版本的向后兼容性的Windows版本Windows 2000支持的唯一格式。最新的格式支持开始使用Windows XP。在支持最新格式的Windows版本,下面的配置单元仍然使用标准格式:HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE\ SAM,HKEY_LOCAL_MACHINE\Security和HKEY_USERS\DEFAULT;其它所有配置单元使用最新的格式。

大多数的配置单元的支持文件都在%SystemRoot%\ SYSTEM32 \Config目录。这些文件在用户每次登录时更新。在这些目录中的文件的文件扩展名,或在某些情况下,缺乏延伸的,表示数据所包含的类型。


Registry hive


Supporting files


HKEY_CURRENT_CONFIG


System, System.alt, System.log, System.sav


HKEY_CURRENT_USER


Ntuser.dat, Ntuser.dat.log


HKEY_LOCAL_MACHINE\SAM


Sam, Sam.log, Sam.sav


HKEY_LOCAL_MACHINE\Security


Security, Security.log, Security.sav


HKEY_LOCAL_MACHINE\Software


Software, Software.log, Software.sav


HKEY_LOCAL_MACHINE\System


System, System.alt, System.log, System.sav


HKEY_USERS\.DEFAULT


Default, Default.log, Default.sav

<7>注册表跟环境变量

系统环境变量:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment

用户环境变量:HKEY_CURRENT_USER\Environment

%SystemRoot%,%windir%,%temp%等变量的形式是%xxx%,其中%表示变量的意思。这些东西在注册表中也都能看到。例如%SystemRoot%表示Windows安装文件夹,如果系统是在C盘安装,那么就是C:\Windows,%windir%等同%SystemRoot%。

位置:在注册表的如下位置可以找到SystemRoot的值。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

参考文献:

http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx

http://msdn.microsoft.com/en-us/library/ms724877(v=vs.85).aspx

Windows 注册表

时间: 2024-10-13 00:47:16

Windows 注册表的相关文章

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

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

利用java.util.prefs包操作windows注册表

利用java.util.prefs包操作windows注册表 Java 操作windows注册表,主要的API 主要接口 接口 说明 NodeChangeListener 用于接收首选项节点更改事件的侦听器. PreferenceChangeListener 用于接收首选项节点更改事件的侦听器. PreferencesFactory 生成Preferences对象的factory对象. 主要的类 类 说明 AbstractPreferences 此类提供了Preferences类的骨干实现,从而

windows注册表编程

Windows注册表 1 注册表的作用 注册表在windows中非常重要,它是一个庞大的数据库,里面保存了大量的系统信息,例如保存软件硬件的配置信息,计算机系统的设置,性能记录. 如果注册表遭到破坏,就可能对整个系统造成影响,甚至系统瘫痪. 2 注册表的结构 注册表是树状的层次结构:主键-->子键-->子键-->子键-->---->键值.其中每一个键都有键值,键值由3部分构成:值名,值类型,值本身值.有点像int x =0的节奏哈. 每个键都有一个默认的值,所以的默认值就是说

详解Windows注册表分析取证

大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么,发生的时间以及如何发生的等.在本文中我将为大家详细介绍Windows注册表的工作原理,以及如何对收集用户留下的各类指纹信息. 什么是注册表? 注册表是用于存储Windows系统用户,硬件和软件的存储配置信息的数据库.虽然注册表是为了配置系统而设计的,但它可以跟踪用户的活动,连接到系统的设备,什么时

Java 修改Windows注册表,以实现开机自启动应用程序。

使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg add 将新的子项或项添加到注册表中 语法:reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f] 参数 KeyName 指定子项的完全路径.对于远程计算机,请在\\ComputerName\Pat

一次Windows 注册表中注册表项目丢失导致的Oracle 数据库启动问题。

一次Windows  注册表中注册表项目丢失导致的Oracle 数据库启动问题. 环境说明: 1.windows 2008操作系统 x64bit 2.Oracle database 11.2.0.1 32bit 3.sqlplus / as sysdba进不去,报错: c:\user\administrator>sqlplus / as sysdba Error 6 initializing SQL*Plus Message file sp1<lang>.msb not found SP

winreg操作windows注册表详解示例

#coding:utf-8 #=====================================================================#=====本程序演示了WINREG操作WINDOWS注册表的所有常见操作#=====作者:dengpeiyou QQ:86074731 2019.01.12#=====================================================================import ctypesimpo

1.3 Windows注册表

如何打开Windows注册表呢? 方法一:Win+R打开命令行,再输入regetdit,回车. 方法二:打开计算机,进入系统所在盘,进入Windows\System32文件夹,找到regedt32,双击运行即可. 方法三:在搜索框内搜索regedit,找到之后双击运行. 那么注册表的作用是什么呢? 注册表可以被称为系统的数据库:系统全局设置的存储库,也是用户的设置信息的存储仓库.(一些黑客入侵电脑也是通过修改注册表实现的) 那么如何了解注册表的一些功能呢? 打开命令行(Win+R),输入"reg

python3读写windows注册表实例

网上的很多代码真的只能参考,有很多停留在python2的编码风格或者没更新新模块的语法沿用语法编写!(当然这是个人观点,如果是系统工程的编码优点还望指正) winreg是内置模块,不用安装,直接上码 import winreg dict1 = {} #新建字典 reg_name = [] #新建数组,存放注册表名 reg_value = [] #新建数组,存放注册表值 key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, r"Software\Micr