注册表 SAM

注册表 SAM

这个是在一次服务器的维护中找到的资料,比较有用,也不知道放哪里,就放"下班时光"吧

这篇文章主要是说明一下Windows系统下的用户和组在注册表中的存放位置与存放内容.实际的用处不是很多,主要是让我们大家可以更多的了解Windows注册表.

好了,多于的话就说到这里,下面就让我带着大家走进Windows注册表的SAM里吧......

首先,我先和大家说一下我使用的操作系统为Microsoft Windows Server 2003 Enterprise Edition (Service Pack 1).对于这个操作系统相信大家都不会感到陌生,该系统是以Windows NT为基本内核的操作系统,有着与Windows 2000和Windows XP一样的内核部分,我就是在这个系统下完成这个研究和这篇文章的.

大部分人都知道以Windows NT为内核的操作系统,它的注册表保存位置在system32\config目录内,其中与用户和组有关的内容是保存在SAM文件当中.当Windows系统启动后,为了后面对用户和组进行比较方便的访问,就把SAM文件内关于用户和组的部分(不是全部的)内容映射在注册表内两个地方:"HKEY_LOCAL_MACHINE\SAM\SAM"和"HKEY_LOCAL_MACHINE\SECURITY\SAM".这两处的内容是完全一样的.

由于以上两处的内容是完全一样,所以我在这里仅以"HKEY_LOCAL_MACHINE\SAM\SAM"做说明.

好了,现在让我们在"远行"窗口中输入"regedit"来打开"注册表编辑器".这个我要说明一点,我在上面所说明的两个注册表位置因为权限的问题在一般情况下是看不到的.所以我们要修改它们的权限,在"注册表编辑器"中选择以上两处注册表位置,在"编辑"菜单中选择"权限",这样就可以打开对应位置的权限对话框.在对话框中我们可以看到只有两个选项("SYSTEM"和"Administrators").我们选择"Administrators",并在下面的"完全控制"中为"允许"打上勾,接着点"确定",最后在按"F5"刷新一下就可以看到里面的所有内容了.

在"HKEY_LOCAL_MACHINE\SAM\SAM"下的"RXACT"项目只有一个默认值,内容不详.

在"HKEY_LOCAL_MACHINE\SAM\SAM\Domains"下有二个项目:"Account"、"Builtin".前者包含系统下所有的用户和由用户创建的组.而后者包含系统所有本身的组.

我们就从大到小,由组开始说起.

在"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin"下有三个项目:"Aliases"、"Groups"、"Users"

其中Groups和Users没有什么实质性的内容,可以不用去管它.

在Aliases下我们可以看到很多的注册表项目,我主要它们分为三类:
1)Members这个项目的真正意义我也不是很清楚,只能大概的设想一下.
在这个项目下有两个子项:S-1-5和S-1-5-21-**********-**********-*********
1.S-1-5子项我也看不太懂,因为它的内容太少了,也没有什么联系.
2.S-1-5-21-**********-**********-*********其中"*"部分为对应的数字,对于这个数字来说,每一台计算机都是不一样的,除GOSHT安装版、网络同传外.这一长串的数字因该是指这台计算机的维一的GUID(全球维一标识符)号码.
在这个项目之下的子项是在这台计算机中所有有本地登录权限的用户账户(只是个映射).至于这个项目下有些什么用户,我个人先在这里卖个关子,就先不做任何说明,大家只要看完这篇文章,自己比对一下就一目了然了.

 


以下注释部分内容是我在写完这篇文章后继续研究发现的内容,所以直接添加到该处,并加入说明(希望大家先看完这篇文章再看这里,这样比较容易理解一点).
/********注释********/

在上面我已说过,这里的内容是在这台计算机中所有有本地登录权限的用户账户,现在我来说明一下每个用户的默认值的意思.
首先是它的数据,每个用户的默认值的数据都是一个特殊符号,这些符号的意思是什么???特别说明一下这些特殊符号都是Unicode格式,在ASCII格式的文本文件中是不能显示出来的,或显示出来的是乱码.如果大家把这编文章COPY下,并放在计事本中保存,那么记得在保存时,选择编码为"Unicode"就可以了(选项在"另存为"对话框的最下面).

经我发现这些符号指的是某个用户的主要权限.那什么又是主要权限呢???
比方说,一个用户在多个组中,如:Administrator,Users.那这个用户的权限是什么呢,大家一定会说这个用户在管理员.没有错,所以这个特殊符号指的就是这个.我们可以做个试验,添加一个用户,把它放在任何多个组中,其中要有Administrator,那么这个用户在这里的默认值数据就为"Ƞ",和"000001F4"一样(当然如果用户只属于Administrator组,结果也是一样了).下面我列出一些组与特殊符号的关系:
Administrators("Ƞ")
Backup Operators("ȧ")
Distributed COM Users("Ȳ")
Guests("Ȣ")
Network Configuration Operators("Ȭ")
Performance Log Users("ȯ")
Performance Monitor Users("Ȯ")
Power Users("ȣ")
Print Operators("Ȧ")
Remote Desktop Users("ȫ")
Replicator("Ȩ")
Users("ȡ")
Debugger Users("无本地登录权限")
HelpServicesGroup("无本地登录权限")
IIS_WPG("无本地登录权限")
TelnetClients("无本地登录权限")

另外说上一句,如果一个用户在"无本地登录权限"的组中,或是在一个由用户创建的组中,或是不在任何的组中,都将不会在该处显示出来.

 

接下来再说一个默认健值的数据类型.大家可能会想,数据类型有什么好说的,我当初也是有这个想法的,只到了"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\Names\Administrators"项目的默认健值的数据类型时,才知道Microsoft有时会把一些信息放在健值的数据类型上.

在这个项目下的所有默认健数据类型一般只有两种:字符串(REG_SZ);可扩允字符串(REG_EXPAND_SZ).当某个用户只属于一个组时,其默认健的数据类型就是"字符串",一旦这个用户属于两个或两个以上组时,其默认健的数据类型就会改为"可扩允字符串".

/********注释********/

 


2)Names这里面的内容是Windows系统的一些用户组的名称,这些组是Windows系统自身就有的,也就是在刚安装好的系统上就会有的组.

我们随便选择几个组,看一下它的默认值,其中数据为空.不过有一点值得注意,那就是默认值的类型(关于Windows注册表的健值有什么样的数据类型,并且这些特殊类型我们要如何的添加,我将在下一篇文章中写出).

我们认真的看一下所有的组,它们的默认值的数据类型都是不一样的,但又都有一个规律,那就是以0x2开头(0x表示后面的数字是用十六进制表示的),后面再根上一个字节长度的十六进制数据.比如:Administrators为0x220;Backup Operators为0x227;Remote Desktop Users为0x22b.在这我就不写出所有的组了,其它的大家可以自己看一下.

对于每一个相同的Windows操作系统而言(比如都是Windows2003,其它的系统就不知道了),所有系统自身的组在这里的默认值数据类型都是一样的.

那么这个所有组都有的默认值数据类型是什么,有什么意义,又是从什么地方来的,要解答这三个问题,就让我们一起往下看,一起看一下我所分的第三类注册表项目吧.

这在里我还要说上几句,我们在这所看到的所有的组,其实都只是一个映射,像这些组的名字其实只是让我们看的懂一点罢了.而在Windows操作系统中,我们可以认为"组"并不是以组名而存在的,权限也并不是以组名来继承的(像这样的映射关系,在Windows操作系统中可以说是屡见不鲜,比如:"我的电脑","回收站"之类;我们上网时安装的一些插件;还有我后面要说到的用户名).


3)我所说的第三类注册表项目,其实包括了很多的内容,只是它们的结构和功能等等是大致一样的,所以我把它们分为一类.

相信当大家打开HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases时,就已经看到了一些像"00000220"、"0000022B"都是由数字和6个英文字母"A、B、C、D、E、F"组成的注册表项目.这些注册表项目的名称也都是用十六进制表示的,只是没有用"0x"开头而已.

好了,现在大家根这我做一个小小的运动(毕竟东东看多了是会累的).我们用自己的手或纸或尺把这些注册表项目前面的"00000"挡住,看一下右边的内容,是不是觉得有点眼熟呀.相信大家也都想到了,这些项目就是前面我所说的组的映射目标,也就是说Windows操作系统自身的所有组的内容都在这里面.

现在让我们打开00000220项目,我们可以看到这个项目下有两个健值(默认值我们不用看了).其中有一个名称为"C",数据类型为"REG_BINARY(二进制)"的健值,双击打开"C"的编辑窗口.

呀,晕了!一大堆的十六进制,看不懂呀......没有关系,我们找重点看.

首先看第一行"20 02 00 00 00 00 00 00"这是什么内容.对于学过C语言和汇编语言的人来说,我一说就因该明白了,那就是"高高低低".这个词是指计算机内存中的数据存储方式.何为"高高低低",比如一个十六进制的数据为"12345678",这个数据必须是连在一起的,不用分开.这个二六进制数据在计算机内存中排列为"87 65 43 21".好了,我们现在也把这行的内容反过来排列一下"0000000000000220",然后把前面的8个"0"去掉就成的"00000220",和这个项目名称刚好对上.

中间的一大串内容都看不懂,不去管它,向下发展.

接下来我们再把编辑窗口拉到最下,什么?????,在右边的ASCII码中我们可以明显的看到有"Administrators"的存在.没错,这就是组的名称.也就是在"计算机管理"里面显示的组名.在"Administrators"下面还可以看到一些乱码,这些就是该组的描述.不过有一个现像,如果组的描述是由字母、数字、字符组成,那么就可以在这里看到.如果有中文,就没有办法看到中文.不但如此,连ASCII码都和原来的中文ASCII码不一样,不知是Microsoft加密了,还是用了Unicode码,或是其他的编码.

在最后面,有一段内容是这里面的重点."01 05 00 00 00 00 00 05 15 00 00 00 AA A7 AC DB 7B B7 81 52 D2 F3 2A 30"这里面有什么内容呢???其实这里面有什么我也不知道(哪来的这么多水果呀,正好饿了.不是吧!?都是些吃过的),大家不要急,听我往下说.重点其实是在这个数据串的后面"F4 01 00 00",这就是重点中的重点呀,这是什么,这就是"Administrator"(如果你只有一个用户在管理员组的话,如果有多个用户在管理员组就向上找).我为什么看到"F4 01 00 00"就认为是"Administrator"呢,想知道就继续向下发展(不要急).

大家可能会有一个疑问,既然后面才是重点为什么要写出前面的一串数据呢,其时这是有必要的,为什么?这还用我说吗,难道你的计算机只有一个管理员吗?这么一长串的数据其实就是该组下每个用户的分隔符.

 


好了,关于"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin"的说明就先讲到这里,下面看另一个目标.

在"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account"同样也有三个项目:"Aliases"、"Groups"、"Users"

其中Groups的内容我也看不懂,所以就不说它了.继续向下.

在Aliases下我仍然把所有内容分为三类:
1)Members这个项目的真正意义我也不是很清楚,只能大概的设想一下.
在这个项目下有两个子项:S-1-5和S-1-5-21-**********-**********-*********
1.S-1-5子项我也看不太懂,因为它的内容太下了,也没有什么联系.
2.S-1-5-21-**********-**********-*********其中"*"部分为对应的数字,这个数字每一台计算机是不样了,除GOSHT安装版、网络同传外.这一长串的数字因该是指这台计算机的维一的GUID(全球维一标识符)号码.
在这个项目之下的子项是在这台计算机中系统自身的用户账户(也只是个映射).如Administrator(000001F4)、Guest(000001F5)、IWAM_GEXING(000003ED)、SUPPORT_388945a0(000003E9)

2)Names这里面的内容是非Windows系统的一些用户组的名称,这些组是在安装好Windows系统后,再通过安装软件、服务或是用户手动添加的组.该项目内的结构和"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin"下的Names是一样的,大家可以参考一下该处的内容.

3)关于这个类别也没有好说的,大家一样可以参考一下"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin"下的内容,结构也是大致一样了.


下面我接着来说明一下"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users"里的内容.

在Users下只有二个类别:
1)Names这里面是Windows系统中的所有用户名(也只是个映射),不管是系统自身的,还是后面添加的都可以在这里找到.但其真实的内容还是在第二个类别里.

2)这个分类里的内容也没有说的,大致和上面的差不多,只是用户的详细内容是在"V"键值下.而别外的一个"F"键值就实在有点难懂.

有一点,在用户的键值"V"中的开头部分,已经找不到该项目的名称了.

另外在"V"键值内,中间的一部分乱码内容是用户的一些属性设置.

好了,现在大家因该看出来为什么我看到"F4 01 00 00"就知道是"Administrator"用户了吗.答案就在"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4"里.

最后再说一个关于用户密码的存放位置,相信这是大家都关心的一个问题.我个人做了一个小小的试验,先添加一个用户,并备份"V"健值的数据内容,然后设置密码.注销当前用户并以新用户登录需要密码.用管理员登录,导入备份的"V"键值数据内容.再次注销当前用户并以新用户登录,结果如我所料"密码为空".

不过在设置密码或是修改密码后,"F"键值的数据内容都会有4个二进制位的数据有点改变.但可以肯定的是用户的密码不会放在"F"健值中.

 

 

 

有关注册表中"HKEY_LOCAL_MACHINE\SAM\SAM"的内容我就说到这里.
下面我再列出一些我做试验时出现的情况,这样出现同样问题,大家就知道是哪里的问题了.
希望大家不要照着我说的去做,不然出了什么问题我自己也没有什么好的解决方法.
如果大家没有看到图片,有可能是该论坛不支持图片上传,但还有一个最大的可能就是我不会上传(毕竟上论坛不多),请大家多多见谅.
(一)
我在"计算机管理"中添加了一个组,然后把"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Aliases"下有关该组的内容删除,将会出现找不到本地组的错误,如图1.
解决方法:把"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Aliases\Names"下该组的内容删除就不再出现该错误.

(二)
1)我在"计算机管理"中添加了一个用户,然后把"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users"下有关该用户的内容删除,虽然用户仍然可以显示,但打开该用户的属性窗口时,将会出现请求未知目录对象的错误,如图2.并且注册表中关于该用户的内容也不会自动删除.

2)接着删除该用户,又会出现找不到用户名的错误,如图3.

3)然后再删除"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names"下的该用户名,刷新"计算机管理"时出现账户名与安全标识间无任何映射完成的错误,如图4.

4)再添加一个用户,把第1和第3步反过来,得到的出错提示仍然是先图2,后图4.
解决方法:只要重新启动一下计算机,系统会自己删除该用户的信息.

(三)
这是我的一个失误,当时我想通过手动删除注册表中的内容,把"Administrstors"组中的所有用户除"Administrator"外都删除,我没有做好备份,结果当我把"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220"下的健值"C"中的"f4 01 00 00"以后的内容都删除后,出现一个有趣的情况:在"计算机管理"中查看"administrators"组中的用户,发现没有用户,添加用"Administrator"用户,提示该用户已经在"Administrators"组.打开"Administrator"用户属性,发现该用户仍然在"Administrators"组中,而且其他的用户也在"Administrators"组中.通过"net user administrator"命令一样可以看到"Administrator"用户属于"Administrators"组.重新启动计算机无法恢复.
最后试着手动一个用户一个用户添加,也都还没有恢复过来.


(四)
1)添加一个用户,把注册表中的该用户的内容导出,并通过"计算机管理"删除该用户.然后导入备份的用户信息,在"计算机管理"中仍然没有该用户.因为在执行删除用户时,把和该用户对应的标识符一起删除了,所以通过手动修改是不能添加用户的.另外也不可以把导出的用户信息改一个用户名就导入,这样同样没有新用户的标识符存在.

 


在试验过程中还出现了一些问题,到现在我想把其他用户通过"计算机管理"从"Administrators"组中删除也都会出现"记录用户 hh 的组成员身份改动时出现了一个多个错误"和"指定的账户名不是本地组的成员"的错误.连最基本的删除一个用户都做不到了.可怜呀~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 


好了,关于这篇文章就写到这里了.终于知道写文章有多累人了.最后再提醒大家一句,注册表是Windows系统最重要的部分,一般最好不要手动进行修改.如果你一定要改,那么请你一定要先做好备份,不然后果可能比我还要严重也说不定的.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国外经典SAM结构分析资料。 偶尔从google上获得,从网上搜集了一大会,发现比国内的资料简直UP了好些年。 Security Accounts Manager Author: clark@hushmail.com Last updated: 3rd April 2005 ________________________________________ This article is based primarily on a local default setup of NT5.0 Professional or 2K (Windows 2000), however there maybe additional verified references to XP Professional and Server Editions. Much will apply across the NT range, but not all has been verified. Note that this is a partial update from the orginal version, there will be more additions, I just thought it was time to consolidate some stuff. This article has been written concisely and progressively, it is advisable not to skim read. Some stuff is advanced, use a test machine where possible. Special thanks to: (alphabetically ordered) esrever_otua: For pointing out something which I had missed about group memberships. fishy5: For coding XORCheck.exe which calculates the registry hive checksum. mirrorshades: For inspiring a hash database space optimzation technique rattle: For coding ntdate.exe which calculates the NT time format and the LastPolicyTime; a couple of programs for the #DAD8636F687BF15B section and for working on the LM Hash Decoder V1/V2 projects. Serg Wasilenkow: For working on the LM Hash Decoder V1/V2 projects. Vladimir Katalov: For the PWSEx product key and working on the LM Hash Decoder V1/V2 projects. xavic: For inspiring a hash database space optimzation technique Due to length and my decision not to divide this article into separate pages I have split the article into 4 main chapters. 01. Users and Groups 02. (some) Security Settings 03. Registry Structure 04. Passwords
### 回答1: 管理员注册表Windows操作系统中一个非常重要的组件,它包含了系统及所有用户的配置信息。管理员可以通过注册表来进行系统设置和管理,对于系统性能和功能的调整和优化起着关键作用。 要下载管理员注册表,我们首先需要了解如何找到注册表的下载来源。通常情况下,Windows操作系统中的注册表是系统自带的,不需要额外下载。用户只需要通过按下Windows键+R,然后在运行框中输入regedit,即可打开注册表编辑器,对注册表进行操作。 然而,也有一些第三方网站或平台提供注册表的下载服务。这些注册表通常是由其他用户或开发者针对特定功能或问题进行优化或调整,并分享给其他用户使用。在下载这些注册表前,我们需要谨慎操作,确保来源可靠且符合我们的需求。 为了下载管理员注册表,我们可以在搜索引擎上输入关键词,如“Windows管理员注册表下载”来查找相关的下载来源。但是需要注意的是,下载和使用第三方注册表时需要谨慎,确保其兼容性和可靠性,以免造成系统稳定性或安全性问题。 总结起来,管理员注册表是操作系统的一个重要组成部分,可以通过系统自带的注册表编辑器进行访问和管理,而对于一些特定功能或问题的优化和调整,也可以通过下载第三方注册表来实现。但在下载和使用第三方注册表时,需谨慎选择可靠来源,确保其兼容性和安全性。 ### 回答2: 管理员注册表Windows操作系统中的一个关键组件,用于存储和管理系统设置和配置的信息。它包含了对于系统设置、用户配置、软件程序和硬件设备等方面的详细记录。 要下载管理员注册表,可以按照以下步骤进行操作: 1. 打开Windows操作系统的文件管理器,可以使用快捷键Win + E来快速打开。 2. 在地址栏中输入以下路径:%systemroot%\system32\config,并按下回车键。 注:此路径表示系统根目录下的system32文件夹中的config文件夹。 3. 在config文件夹中,找到名为“SAM”、“SOFTWARE”、“SYSTEM”、“DEFAULT”和“SECURITY”的文件。 注:这些文件就是管理员注册表的主要组成部分。 4. 选择需要下载的文件,右键单击并选择“复制”或“剪切”选项。 5. 在本地计算机中选择一个目录,右键单击并选择“粘贴”选项。 注:这将把选定的注册表文件复制到本地计算机中。 6. 等待复制过程完成,然后就可以在本地计算机上使用管理员注册表文件了。 需要注意的是,管理员注册表Windows操作系统的核心组件,它存储了系统的重要配置数据。对于未经许可或不熟悉的用户来说,直接修改或替换注册表文件可能会导致系统出现问题甚至无法启动。因此,在进行任何操作之前,请务必备份现有的管理员注册表文件,并确保具备必要的系统知识和技能。如果您不确定如何操作,建议咨询专业人士或寻求相关的技术支持。 ### 回答3: 管理员注册表下载是指从互联网上下载管理员注册表的过程。管理员注册表Windows操作系统中一个重要的系统数据库,它保存了各种配置信息和设置,以及对系统和应用程序的控制。管理员注册表的下载可以提供给系统管理员进行诊断和解决问题,或者为系统定制和优化提供支持。 管理员注册表下载通常需要通过官方渠道获得,比如Microsoft官方网站或者Windows操作系统的官方支持页面。用户可以在这些网站上找到管理员注册表的下载链接或者下载工具。在下载之前,用户需要确认自己是合法的系统管理员身份,并接受相关的使用条款和许可协议。 管理员注册表下载的过程并不复杂,一般只需要点击下载链接或者运行下载工具。下载完成后,用户会得到一个压缩文件,其中包含管理员注册表的文件和文件夹。用户需要解压缩这个文件,并将其中的内容放置到系统正确的目录中,以完成注册表的更新或替换。在替换注册表之前,用户需要备份原来的注册表数据,以免发生意外导致系统出现问题。 总之,管理员注册表下载是一个重要的系统维护和优化过程,可帮助系统管理员进行诊断和解决问题,并为系统定制提供支持。用户应该通过官方渠道获得合法的管理员注册表下载,并谨慎操作,以确保系统的稳定和安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值