Windows账户安全设置

一、Windows账户配置

1、创建用户账户

当我们在Windows中创建一个用户账户的时候,都会发生什么事情?

首先,系统会根据输入的用户名为该用户创建对应的配置文件,然后为该账户生成一个唯一的SID(Security
Identifiers,安全标识符),并根据账户的类型给对应的SID指派相应的权限或权利,接着将该账户的访问凭据(用户名和密码)等信息加密后保存在数据库中。

对于单机和工作组环境下的本地账户,凭据信息保存在本机的 SAM
数据库中;对于域环境下的域全局账户,这些信息保存在域控制器上。在我们给一个对象设置访问权限的时候,实际上是在编辑该对象的ACL(Access Control
List,访问控制列表)。

上述内容涉及了几个概念,下面对这些概念进行解释。

1. 安全标识符

和很多人想象中的不同,Windows 并不是根据每个账户的名称来区分账户的,相反,
Windows依靠的是SID。在Windows环境中,几乎所有的对象都具有对应的SID,例如本地账户、本地账户组、域账户、域账户组、本地计算机、域、域成员,这些对象都有唯一的SID(可以将用户名理解为我们每个人的名字,将SID理解为每个人的身份证号码,人名可以重复,但身份证号码绝对不会重复)。

这样做主要是为了便于管理,例如,因为Windows是通过SID区分对象的,我们完全可以在需要的时候更改一个账户的用户名,而不用担心需要对新名称的同一个账户重新设置所需的权限,因为SID是不会变化的。同理,如果有一个账户,我们已经给该账户分配了相应的权限,一旦删除了该账户,然后重建一个使用同样用户名和密码的账户,因为账户的SID已经发生了变化,因此,尽管账户的名称和密码都相同,但原账户具有的权限和权利并不会自动应用给新账户。

SID是一个48位的字符串,在Windows 7中,要想查看当前登录账户的SID,可以使用管理员身份启动命令提示行窗口,然后运行“whoami
/user”命令,运行该命令后,我们可以看到类似这样的结果:

该工具可以显示当前登录账户的 SID。如果希望查看本机其他账户的 SID,或者希望在不包含该工具的老版本 Windows 中查看账户
SID,则可以借助微软的一个免费小工具PsGetSid,该工具可以在http://tinyurl.com/5tt7fo中免费下载。使用该工具时,只需要在命令行窗口中输入“PsgetSID”,接着输入一个空格,并输入要查看SID的账户名称即可。

虽然SID是唯一的,不过依然有一些通用SID,在Windows所有的系统中,这些SID都是完全通用的。

这些相同的SID主要是为了方便管理,例如,下表列出了一些比较常见的通用 SID。

2. 权限和权利

在Windows环境下,有两个术语用于表示访问特权:权限(Permission)和权利(Right)。权限是指用某种固定方式访问某个特定对象的能力,例如给
NTFS 分区上写入文件或者删除文件;权利是指执行某些特定操作的能力,例如更改分页文件的设置。

3. 访问控制列表

为什么我们使用标准账户登录后,无法打开某些关键的系统文件夹?如果需要禁止某个用户打开一个文件夹或文件,此时可通过NTFS权限进行限制,其实这些都是访问控制列表(ACL)的功劳。

在Windows系统中,每个可访问的对象(文件夹、文件、打印机、计算机等)都有对应的ACL,为对象设置权限实际上就是在编辑对象的ACL。举例来说,如果希望禁止用户“User”访问一个文件夹A,那么实际上就是编辑文件夹A的ACL,在ACL中添加拒绝用户“User”(SID)访问的条目。当然,在ACL中,用户实际上也是通过对应的SID进行区分的。

同理,当一个用户试图访问某个对象时,Windows
的安全子系统首先会根据用户的账户名得到该用户的SID,然后将SID和对象ACL中的信息进行对比。如果发现ACL中的记录允许该SID访问,那么就允许访问;反之,就禁止访问。

2、登录过程和访问令牌

账户已经创建好了,而且相应的 SID、配置文件,以及权限都设置好了,那么在使用Windows的过程中,它们是如何参与到保证系统安全的工作中的?

在登录的时候,如果用户输入的用户名和密码通过了 SAM 数据库或者域控制器的验证,那么Windows会自动为该用户生成一个安全访问令牌(Security
Access
Token),其中包含了这个用户的用户名和SID等信息,同时还包含该账户所在用户组的信息(这些内容被统称为安全配置文件)。访问令牌可以看做是一张电子通行证,里面记录了用于访问对象、执行程序,以及修改系统设置所需的安全验证信息。

访问令牌是可以传递的,例如,如果一个用户在登录后试图运行某个程序,那么这个程序就会获得该用户的访问令牌。简而言之,用户运行的程序将具有和用户本身同样的特权。例如,对于管理员用户,他登录后就具有管理员权限的访问令牌,而该用户运行的程序也将具有管理员权限,对系统具有完整的控制权。假设该用户从电子邮件中收到了一个带有病毒的附件,这个病毒会恶意修改系统设置,如果运行该附件,那么这个附件也将具有管理员权限,因此,完全可以实现修改系统设置的目的;但如果该用户是标准/受限账户,没有修改这个系统设置的权限,那么该用户运行感染病毒的附件后,病毒虽然可以运行,但因为缺少权限,则无法修改系统设置,这也就直接阻止了病毒的破坏。

因此,长久以来,很多安全类的书籍或者文章都会建议大家在Windows中创建一个管理员账户,并创建一个标准账户,这样平时可以使用标准账户登录,只有在需要维护系统,或者进行其他需要管理员权限才可以进行的操作时才使用管理员账户登录。

在Windows 7中,因为有了全新的用户账户控制功能,该功能可以限制用户的权限,从而进一步保证了系统的安全。

3、深入理解配置文件

用户配置文件夹的层次结构也叫做用户配置文件的名称空间,在Windows 7中,名称空间的使用方式与老版本Windows(主要是Windows
Vista之前的系统)相比,有较大区别。

了解这些区别对于了解最小用户特权这一设计思想是非常重要的,同时名称空间的变化也是第三方应用程序遇到兼容性问题的一个主要原因。因此,下面将以Windows
XP和Windows 7为例,介绍在这两个系统下名称空间的改进。

1. Windows XP的配置文件名称空间

在Windows XP(以及更老版本的Windows)中,用户配置文件名称空间主要有下列特征:

  • 本地用户的配置文件位于%SystemDrive%\DocumentsAndSettings目录下。
  • 每个在本机上登录过至少一次的用户都将有一个以自己账户名为名的配置文件夹,也就是“%SystemDrive%\Documents And Settings\用户名”。
  • 有一个特殊的配置文件夹%SystemDrive%\DocumentsAndSettings\AllUsers,其中包含了一些通用的项目,例如,要在所有登录到本机的用户桌面或开始菜单中显示程序的快捷方式,以及桌面图标。通过对该配置文件的内容进行定制,即可让所有登录到本机的用户看到相同的程序快捷方式。
  • 有一个特殊的隐藏配置文件夹%SystemDrive%\DocumentsAndSettings\DefaultUser,主要充当为新用户创建配置文件时的模板使用。当用户首次登录到本机时,Windows会自动加载Default User配置文件,并将其复制到“%SystemDrive%\Documents And Settings\用户名”路径下,作为该用户的配置文件。

Windows XP的配置文件夹内包含的子文件夹主要用于保存应用程序设置和用户数据,其中还有一些文件夹是隐藏的,如图所示。

这些重要的文件夹以及用途分别是:

  • ApplicationData:包含与特定应用程序有关的数据,例如应用程序的配置参数。
  • Cookies:包含IE的Cookie文件。
  • Desktop:包含要在用户桌面上显示的内容,例如文件或快捷方式。
  • Favorites:包含IE的收藏夹内容。
  • Local Settings:包含与特定计算机有关的应用程序设置和数据,或者因为太大不适合在域环境中进行漫游的文件。该文件夹下还有几个重要的子文件夹,包括Application Data、History、Temp和Temporary Internet Files。

漫游是什么意思?

在域环境中,因为用户可以使用域账户在任何一台加入域的计算机上登录,因此,通过“漫游配置文件”可以将用户的配置文件保存在文件服务器上。这样,用户无论在哪台客户端计算机上登录,都可以直接从文件服务器将配置文件夹下载并缓存到本地,保存在配置文件夹中的内容(例如文档、应用程序的设置等)就可以在任何一台计算机上使用。而用户注销的时候,客户端计算机还会自动将配置文件中修改过的内容重新传输到文件服务器上。

配置文件的漫游只能在域环境中使用,不能用于单机和工作组环境。不过,通过对配置文件重定向,将文件统一保存在网络服务器上也可以获得类似域环境的漫游效果。

  • My Documents:用于保存用户所创建的文档的默认位置,也就是“我的文档”。该文件夹还包括几个重要的子文件夹,例如:My Pictures、My Music,以及其他针对特定应用程序的文件夹。
  • NetHood:包含要在“网上邻居”中显示的快捷方式。
  • PrintHood:包含要在打印机文件夹中显示的快捷方式。
  • Recent:包含到最近打开过的文件、程序,以及设置的快捷方式。
  • SendTo:包含到不同存储位置以及应用程序的快捷方式,也就是我们熟知的右键“发送到”菜单内容。
  • StartMenu:包含要在“开始”菜单中显示的快捷方式。
  • Templates:包含用做模板项的快捷方式。

注意:Windows资源管理器的名称“翻译”功能。

默认情况下,这些文件夹的名称实际上都是英文的,但在中文版Windows的资源管理器中打开配置文件夹后会发现,有些文件夹使用了中文的名称,其实这是为了便于使用,Windows
资源管理器所提供的名称“翻译”功能可以自动将一些常用文件夹的名称翻译为更友好的中文。但在文件系统上,这些文件夹依然都使用了英文的名称。

对于Windows XP这种用户配置文件夹名称空间,使用起来虽然很方便,但依然存在一定的不足,具体表现在:

  • 用户配置文件中同时保存了应用程序和用户数据文件夹,这意味着两种类型的数据会被保存在一起。例如,%SystemDrive%\Documents And Settings \user_name\Local Settings\Application Data文件夹中就同时保存了针对特定计算机的数据和设置,但这些内容是不能(也不该)被漫游的,而且其中可能会保存过大的不适合漫游的内容,因此,这样的设计并不是很完美。
  • MyPictures、MyMusic,以及MyVideos等文件夹属于MyDocuments的子文件夹,这些子文件夹中通常会是体积非常大的媒体文件。因此,一旦配置文件夹重定向,在登录和注销时,可能需要通过网络传输大量的数据,这将导致登录和注销时间的延长,而且这种传输往往是不必要的。
  • 对于第三方应用程序在配置文件夹的哪些位置存储每个用户的设置和数据,没有统一的约定。例如,有些第三方应用程序可能会在用户配置文件夹下新建子文件夹,用于存储用户信息,而不是使用现有的名称空间位置。而且某些第三方应用程序可能会针对特定计算机的,以及每个用户设置的信息同时保存到Application Data文件夹下,这可能会导致某些应用程序漫游后无法使用。

2. Windows 7的配置文件名称空间

因为存在种种不足,因此,从Windows Vista开始,用户配置文件夹的名称空间有了很大变化,Windows 7也延续了这些变化,这些变化包括:

1)用户配置文件名称空间的根位置从%SystemDrive%\Documents And
Settings移动到%SystemDrive%\Users,这意味着某个用户配置文件夹的位置变为“%SystemDrive%\Users\用户名”,而不再是“%SystemDrive%\Documents
And Settings\用户名”。

2)用于保存用户数据的文件夹不再添加“我的”这一前缀,这样在显示上更简洁。但是这里需要再次提醒注意Windows资源管理器的“翻译”功能,实际上,在Windows
7中,配置文件名称空间中的文件夹将不再出现“我的”前缀,但资源管理器在对这些名称进行翻译的时候,依然会添加该前缀(要确认这一点,可以通过Windows资源管理器以及命令行窗口浏览配置文件夹的内容)。

3)Windows 7中的My Music、My Pictures,以及My Videos文件夹不再是My
Documents的子文件夹,并且这些文件夹开始直接保存在配置文件夹的根路径下,与My
Documents文件夹的层次结构是相等的。通过这样的设置,用户自己的数据以及应用程序设置之间可以更好地分开。

4)在配置文件夹根目录下,新增了多个子文件夹,以便更方便地保存不同类型的用户数据和设置,新增的子文件夹包括以下5个。

  • Contacts:用于保存用户联系人信息的默认位置。
  • Downloads:用于保存所有下载文件的默认位置。
  • Searches:用于保存已保存搜索(也就是虚拟文件夹)的默认位置。
  • Links:用于保存Windows资源管理器收藏夹内容的默认位置。
  • SavedGames:用于保存游戏存盘记录的默认位置。

5)为了让应用程序更好地实现漫游,在AppData文件夹下新建了三个相互分离的子文件夹,其作用分别为:

  • Local该文件夹保存了无法(也不该)被漫游的与计算机相关的应用程序数据和设置,以及因为太大而无法有效漫游的用户自己的数据或设置。Windows 7中的AppData\Local文件夹实际上等同于老版本Windows中的Local Settings\Application Data文件夹。
  • Roaming该文件夹保存了应当(或者必须)被漫游的与用户相关的应用程序数据和设置,Windows 7中的AppData\Roaming文件夹实际上等同于老版本Windows中的配置文件夹根目录下的Application Data文件夹。
  • LocalLow该文件夹可供低完整性进程获得写操作的权限。低完整性进程执行的操作不能影响操作系统,例如,由保护模式下的IE所启动的应用程序就只能使用该配置文件夹存储应用程序的数据和设置。LocalLow文件夹是Windows Vista/7中新增的。

6)All
Users配置文件被更名为Public,这样可以更好地凸显其用途。保存在该文件夹下所有的内容都可被本机的所有用户使用,而该文件夹的某些子文件夹(例如
Desktop 的内容)则会在用户登录到本机后,合并到该用户自己的配置文件夹中。

7)Default User配置文件被更名为Default,与Windows XP中的Default User类似, Windows
7中的Default配置文件是从不被加载的,只会在新建配置文件的时候直接复制。因此,也是作为用户首次登录本机时创建配置文件的模板使用。

4、家长控制

首先我们需要建立被设置家长控制的账户,该账户只能是标准账户。

并且计算机管理员账户需要设置密码保护,否则一切设置将形同虚设。

Windows7的家长控制主要包括3方面详细内容,时间控制,游戏控制以及程序控制。首先确认登陆计算机管理员的帐户,打开“控制面板”-“用户账户和家庭安全”-“家长控制”,选择需要被控制的账号。

下边便是具体设置界面,保证家长控制是启用状态。

时间控制。鼠标单击事件点便可切换阻止或者允许。

当被控制账户在设置阻止的时间段登陆便会提示无法登陆,如图。

可以按游戏分级设置游戏允许情况,但因为国内目前没有游戏分级规定,所以如果有某些游戏无法设置分级阻止可以使用特定游戏阻止方式。

如果游戏被设置为不允许使用会提示已经被阻止,并且还可以从开始菜单中直接看到标记为无法使用,如图。

程序设置中可以设置为都可以使用,或者只允许某些程序可以使用,系统会自己刷新可以找到的相关程序,勾选便可设置允许使用该程序,或者使用下边浏览按钮添加无法找到的其他程序。

当程序被阻止时会有相关提示,如图。

二、用户账户控制

1、UAC简介

用户账户控制(UAC)最初名为User Account Protect,是微软为提高系统安全而在Windows
Vista中引入的新技术,它要求所有用户在标准账号模式下运行程序和任务,阻止未认证的程序安装,并阻止或提示标准用户进行不当的系统设置改变。

在Windows
7中,微软对UAC功能进行了大量改进,在确保安全性的同时,让UAC的提升提示出现的数量更少,而且我们可以根据需要使用不同级别的提示,因此,在确保安全的同时,也进一步提升了易用性。

虽然很多有关安全的文章一直都在建议平时使用标准账户的权限登录系统,并执行各种操作,只有在需要执行管理任务的时候才使用管理员账户。但实际上,在Windows
Vista发布之前的时代,如果想要在日常操作中使用非管理员账户实现常规操作,往往是很困难的,这主要是因为:

  • 很多应用程序只有在提供管理员特权的情况下才能运行,哪怕本身可能只是一个非常简单的小游戏。
  • 如果希望使用低特权运行应用程序,往往需要使用Runas命令,这样非常不方便。
  • Windows自身的一些操作,例如更改时区、添加打印机等,也需要管理员特权。

Windows Vista/7中的UAC功能则能让不具备管理员特权的账户在使用上更方便,这些方便具体体现在:

  • 大部分应用程序可以在没有管理员特权的情况下正常运行。针对Windows7设计的应用程序并不会要求无谓的管理员特权,而且 UAC 会通过文件系统和注册表虚拟化技术为存在问题的程序提供向后兼容性。
  • 要求管理员特权的应用程序会在必要时向用户显示提升提示。例如,在修改某些用程序的配置时,如果修改的是只影响当前用户的选项,那么可以直接修改;如果被修改的是影响整机所有的用户,甚至影响系统本身的设置,那么在应用这些改动的时候就需要经过提升提示。
  • 执行常规任务不再要求管理员特权。Windows7中包含大量的改进,这样标准用户即可在不需要提供管理员凭据的情况下执行大部分常规的配置工作。例如,在老版本Windows中,只有管理员可以更改时区,而在Windows 7中,普通用户即可修改,对于需要跨国旅游的人来说,这是非常方便的改进。但由于更改系统时钟可能产生较大的影响,因此,在Windows 7中,依然只有管理员可以修改系统时钟。
  • 对于需要管理员特权的功能,操作系统会使用盾牌图标标识出来。在老版本Windows中,用户可能根本不知道操作系统的哪些功能要求使用管理员特权,只有在真正进行修改时才会遇到错误信息。但在Windows 7中,任何需要管理员特权的内容都会用醒目的盾牌图标标识出来。
  • 就算使用管理员账户登录,Windows7依然默认使用标准用户的权限运行应用程序。虽然建议大部分用户平时使用标准账户登录系统,但也会有人习惯于使用管理员账户登录。有了 UAC 的保护后,用户执行的程序依然会使用标准用户的特权,这样做无疑更加安全。

因为在特权的使用上有了较多的改变,因此,相比Windows XP,带有UAC的Windows
Vista/7在某些方面的行为也出现了不同,它们的区别如下表所示。

UAC是一个有用的功能,可因为一些误解,使得该功能受到了不少质疑。例如,很多人觉得这个功能对系统安全不仅起不到任何提高作用,反而增加了使用的难度,因为很多老程序在该功能面前遇到了兼容性问题,同时该功能也令很多操作更加烦琐。

和老版本的Windows有很大不同,在Windows 7中,当用户使用管理员账户登录时, Windows
会为该账户创建两个访问令牌:一个标准令牌,一个管理员令牌。大部分时候,当用户试图访问文件或运行程序的时候,系统都会自动使用标准令牌进行,只有在权限不足(也就是说,如果程序宣称需要管理员权限的时候)时,系统才会使用管理员令牌;如果程序没有宣称自己需要管理员权限,此时程序的部分功能可能无法正常使用,或者程序无法运行,这也是在启用UAC的情况下,某些应用程序兼容性问题的主要原因。

这种将管理员权限区分对待的机制叫做UAC(User Account Control,用户账户控制)。简单来说,UAC实际上是一种特殊的“缩减特权”运行模式。

在进行需要管理员特权的操作时,系统首先会弹出“UAC”对话框要求用户确认(如果当前登录的是管理员用户),或者输入管理员用户的密码(如果当前登录的是标准用户)。只有在提供了正确的登录凭据后,系统才允许使用管理员令牌访问文件或运行程序。这个要求确认或者输入管理员账户密码的过程叫做“提升”。

根据账户类型的不同,在Windows 7中有两种不同的“提升”对话框。如果当前登录的是管理员账户,那么“提升”对话框将如图 所示,只需确认即可继续。

如果当前登录的是标准账户,那么“提升”对话框将如图所示,此时需要输入一个管理员账户的密码才能继续。

在管理员账户的“提升”对话框中,可以看见当前要使用管理员全新安装运行的程序的名称,单击“详细信息”按钮后可以看到该程序的安装路径等信息。而根据实际情况,如果希望运行该程序,可以单击“继续”按钮,否则可以单击“取消”按钮。

在标准账户的“提升”对话框中,除了上述内容外,主要还显示了当前本机上的所有管理员账户,此时需要选择一个管理员账户,然后输入密码,即可单击“继续”按钮运行该程序。

另外,取决于要以管理员身份运行的程序的不同,“提升”对话框顶部一栏的底色可能会有所变化,一般来说,我们可以见到的底色以及对应的含义如下:

  • 红色背景,带有红色盾牌图标表示该程序的发布者被禁止,或者被组策略禁止。在遇到这种“提升”对话框的时候要万分小心。
  • 橘黄色背景,带有红色盾牌图标表示该程序不被本地计算机信任(主要是因为不包含可信任的数字签名或者数字签名损坏)。
  • 蓝绿色背景表示该程序是WindowsVista自带的程序(带有微软的数字签名)。
  • 灰色背景表示该程序带有签名并且被本地计算机信任(带有可信任的数字签名)。

在Windows 7中,很多选项旁都被增加了一个彩色的盾牌图标,如图所示。

这个图标表示该选项需要更高的权限,使用之前首先要经过UAC的提升。

2、配置UAC

很多对UAC抱有成见的人主要分为两种情况。

新手往往认为,UAC功能让原本就显得有些烦琐的操作变得更加烦琐,因为在执行很多操作的时候都需要进行确认,或者输入管理员密码。

对UAC以及对系统安全有所了解的人则认为,UAC虽然可以对恶意软件的运行制造人为的障碍,但并不能彻底解决问题。例如,如果病毒需要修改系统设置,或者破坏系统,而反病毒软件因为各种原因没能及时拦截,虽然UAC会要求用户完成提升操作,但如果用户对此不够了解,随随便便就单击了“继续”按钮,那么病毒依然会成功运行。

其实这两种看法都很好理解。确实,启用UAC后,很多操作都需要提升,不过绝大部分操作都是可以在不需要提升的情况下进行的。例如,Windows
刚安装好后,我们可能需要根据实际情况对一些系统设置进行调整,在这个过程中可能会经常被UAC打断。然而,一旦配置好系统,在平时的使用中,绝大部分人很少,甚至完全不需要对重要的系统选项进行其他调整。因此,
UAC的存在与否在这时候已经不再那么“扰民”了。

至于应用程序,很多程序因为其特殊性,例如需要直接读写关键的系统文件,或者需要工作在系统底层,每次运行的时候都需要提升。但这往往是少数情况,随着
Windows Vista/7等包含UAC功能的Windows操作系统的进一步普及,应用程序开发商针对UAC开发出兼容性更好的程序后,这种现象也会越来越少。

至于很多人认为的如果不了解整个机制的人在遇到UAC“提升”对话框后随随便便单击“继续”按钮,这确实是存在的。然而安全性最薄弱的环节永远在用户,毕竟操作系统不能直接对用户的操作进行干预。例如,如果用户要执行某个病毒文件,操作系统根本无法判断用户到底是无意中执行的,还是因为要研究这个病毒而故意执行的,因此,Windows只能用“提升”对话框告诉用户执行这个操作需要较高的权限才能进行,需要谨慎,至于是否接受操作系统的建议,是否继续进行这个操作,这依然取决于用户本身。

从另一方面考虑,这个提升过程还是可以增强系统安全性的。例如,从网上下载了一个软件的安装程序,该安装程序中被捆绑了病毒,但我们并不知道这件事,那么在运行这个软件的时候,因为我们知道这个软件是公司
A 开发的,带有公司 A
的数字签名,但Windows突然显示了一个“提升”对话框,告诉我们有个未经签名的或者由公司B签名的软件需要管理员权限才可以安装,这时候相信对UAC的工作原理有所了解的人都会意识到其中存在的问题。

在Windows
7的默认设置中,UAC的很多行为经过改进和调整后,已经不再那么烦人。而且通过选项还可以修改UAC的提示级别。因此,这里介绍如何让UAC在确保系统安全的同时,能够更加安静。

1. 修改默认提示级别

如果认为Windows 7中默认设置的UAC依然比较烦人,那么可以通过下列操作调整提示级别:

  • 使用管理员账户登录Windows 7,打开“控制面板”。
  • 在“控制面板”中依次单击“用户账户和家庭安全”→“用户账户”→“更改用户账户控制设置”。
  • 在随后出现的如图所示的界面中,可通过滑块调整UAC的提示级别。这里提供了五个级别,从上到下的安全性递减,同时,“扰民”的程度也是递减的。

  • 如果希望彻底将 UAC 的提示关闭,则可以将滑块拖动到最底部。但是这并不是禁用了UAC,只不过UAC不再显示任何提示信息而已。
  • 单击“应用”按钮,此时取决于具体的设置,可能需要重新启动系统,其中的修改才能生效。

上述不同级别之间的区别,以及建议的使用环境可参考下表。

对于普通用户,通常情况建议将默认的(第三)级别下调一个级别,这样可以获得与默认设置完全相同的安全保护,只不过在显示UAC提升对话框的时候,整个屏幕不再变暗,这也就是所谓的“安全桌面”。

默认情况下,Windows
7弹出UAC提升对话框时,桌面背景会变暗。这样做的主要原因并不是为了突出显示UAC的对话框,而是为了安全。由于UAC对话框运行在安全桌面上,所以安全性非常好。除了受信任的系统进程之外,任何用户级别的进程都无法在安全桌面上运行。这样就可以阻止恶意程序的仿冒攻击。

举例来说,如果有恶意软件打算伪造UAC的提升对话框,以便骗取用户的账户和密码,如果没有安全桌面功能,那么用户如果没能区分出真正的UAC提升对话框,或者伪造的对话框太过逼真,那就有可能泄露自己的密码。而使用安全桌面功能后,因为真正的提升对话框都是显示在安全桌面上的,而这种情况下,用户无法和其他程序的界面进行交互,因此,避免了大量的安全问题。

安全桌面功能的本意是好的,但有些情况下可能会比UAC提升对话框本身更烦人。例如,在切换到安全桌面时,整个屏幕首先会黑一下,然后桌面上显示的其他内容都被变暗显示,并且这些内容都无法操作。实际上,在屏幕变黑的过程中,系统会自动给整个桌面截图,然后全屏显示到安全桌面上作为背景,并在这个背景之上显示提升对话框。对于某些计算机,如果性能不够强,或者驱动有问题,就可能导致这个过程的速度缓慢,影响正常操作。因此,如果不能忍受安全桌面功能,可以考虑将UAC的提示下调一个级别。

2. 用策略控制UAC

操作之前需要调整组策略设置,然而只有Windows 7商业版/企业版/旗舰版才具有组策略功能。家庭基础版和家庭高级版Windows 7不带有组策略功能。

打开“开始”菜单,在“搜索”对话框中输入“secpol.msc”后按回车键,打开本地安全策略控制台。在窗口左侧的控制台树中依次定位到“安全设置”→“本地策略”→“安全选项”,随后在右侧窗格中可以找到10个以“用户账户控制”字样开头的策略,如图所示。

这里要介绍的就是这10条策略。

1)标准用户的提升提示行为

该策略决定了使用标准用户账户登录的用户在运行需要管理员权限的程序时,是否可以看见提升对话框。默认情况下,使用标准账户登录的用户在运行需要管理员权限的程序时,会被要求输入管理员账户的登录凭据(也就是密码),但通过配置这个选项,用户就不会看到提示。在这种情况下,用户将无法通过提供管理员账户登录凭据的方式获得提升后的权限,也就无法继续进行操作。但该设置并不能阻止用户用鼠标右键单击程序的快捷方式,然后选择“以管理员身份运行”的方式进行提升。

如果希望标准用户在需要时可以看到UAC提升对话框,那么可将该策略设置为“提示凭据”,同时这也是默认设置。如果不希望标准用户在需要的时候看到UAC提升对话框,可以将该策略设置为“自动拒绝提升请求”。

2)管理员批准模式中管理员的提升提示行为

该策略决定了受限于管理员批准模式的管理员账户在运行需要管理员权限的程序时,是否可以看到提升提示,同时还决定了提升提示的工作方式。默认情况下,管理员在运行需要管理员权限程序时会被要求批准,但只要单击“继续”按钮,不用输入自己的密码,就可以完成提升操作。如果配置了该选项,那么管理员也必须输入自己的密码,就好像标准用户做的那样。我们还可以通过配置这个选项让管理员看不到任何提示,这种情况下,管理员也将无法提升自己的特权。不过这样做并不能防止管理员用鼠标右键单击一个程序的快捷方式,然后选择“以管理员身份运行”。注意,该策略不影响系统内建的Administrator账户。

对于该策略,建议使用默认的“非 Windows
二进制文件的同意提示”,这样只有在需要提升非Windows自带程序时才会看到提升对话框,如果是Windows自带的程序需要提升,则可直接通过。但如果希望管理员账户在运行需要管理员权限的非Windows自带程序时,可以不用见到UAC提升对话框,而是直接自动提升,那么可以将该策略设置为“不提示,直接提升”(通常不建议这样做)。如果希望管理员账户在运行需要管理员权限的程序时,可以看到UAC提升对话框,但直接单击“确定”按钮即可继续,那么可以将该策略设置为“同意提示”(如果计算机只有自己使用,可以这样做)。

如果希望管理员账户在运行需要管理员权限的程序时,可以看到UAC的提升对话框,同时必须输入自己或者其他管理员账户的密码后才可以继续,那么可以将该策略设置为“提示凭据”(如果别人偶尔需要使用我们自己的账户运行程序,建议这样做)。

3)检测应用程序安装并提示提升

该策略决定了Windows是否自动检测应用程序的安装,并提示权限提升或批准。因为该策略默认是启用的,Windows
会自动检测应用程序的安装,并在需要的时候提示用户提升权限或者进行批准,以便能够继续安装。如果禁用该策略,用户就不会得到提示,在这种情况下,用户将无法通过提供管理员凭据的方式提升权限。

也就是说,如果希望UAC功能在自动检测到安装程序的运行时自动提升权限,提示用户单击“继续”按钮或者“允许”按钮,或者输入管理员账户密码,那么可以将该策略设置为“已启用”;如果希望UAC功能在自动检测到安装程序的运行时不提升权限,而是彻底禁止用户安装需要提升后才可以安装的程序,那么可以将该策略设置为“已禁用”。这样做并不会禁止少数不需要提升且使用标准权限即可安装的程序的正常安装。而且如果直接在安装文件的图标上单击鼠标右键,选择“以管理员身份运行”,也可以直接提示并进行安装,此时不会受到该策略的影响。

4)将文件和注册表写入错误指定到每个用户的位置

该策略决定了是否打开文件和注册表的虚拟化功能。因为该策略默认是启用的,因此,与虚拟化文件,以及注册表键有关的错误提示和错误日志会被写入到虚拟位置,而不是程序试图写入的实际位置。如果禁用该策略,当应用程序试图写入受保护的文件夹或注册表键的时候,就算出现错误,也不会得到提示。

注意禁用该策略有可能导致一些老的不兼容Windows
7的应用程序无法正常运行,同时因为这条策略对一般用户的交互使用影响不大。为了安全、稳妥起见,最好不要修改该策略的默认设置。

5)仅提升安装在安全位置的UIAccess应用程序

该策略决定了是否只有安装在文件系统中安全位置下的UIAccess程序才能被提升。如果启用该策略,只有位于%SystemRoot%\Program
Files、%SystemRoot%\Program
Files(x86),或%SystemRoot%\Windows\System32下的UIAccess程序才会受到影响。

什么是UIAccess程序?

UIAccess 是一种用于提升软件可用性的技术,但因为 UAC
的某些设计特性,可能会在使用中导致一些问题。例如,盲人在使用计算机时,通常需要使用读屏软件(也就是一种UIAccess程序)将屏幕上显示的菜单、对话框等内容转变成声音,这样才能正确操作计算机。然而在启用安全桌面的情况下,读屏软件将无法与安全桌面的内容进行交互,也就无法读取安全桌面中提升对话框的内容,这会对盲人用户的使用造成不便。因此,在UAC的设计过程中,就考虑到了这些特殊情况,并允许对这类辅助软件进行提升,协助用户的正常使用。

该策略会影响到Windows的完整性级别检查,同时对普通用户的交互影响不大,因此,建议保持默认设置,不要更改。当然,该策略只有在使用安全桌面的情况下才有意义,如果已经禁用了安全桌面,可以忽略该策略。

6)提示提升时切换到安全桌面

该策略决定了Windows
7在显示提升提示的时候是否切换到安全桌面。安全桌面可以将该程序和进程限制在桌面环境上,这样可以降低恶意软件或用户可以访问需要提升的进程的可能性。

默认情况下,这个安全选项是被启用的,如果不希望Windows在提示提升之前切换到安全桌面,那么可以禁用该策略。然而这可能使得计算机更容易被恶意软件所感染和攻击。当然,对于安全桌面,更简单的方法是使用介绍的内容,将默认的
UAC提示下调一个级别。

7)以管理员批准模式运行所有的管理员

该策略决定了使用管理员账户登录的用户是否使用管理员批准模式。默认情况下,这个策略是启用的,这也就意味着管理员也是以管理员批准模式运行,因此,管理员批准模式下的管理员账户也会在适当的时候遇到提升提示。如果禁用了这个设置,使用管理员账户登录的用户不受管理员批准的影响,也不会看到提升提示。

简单来说,如果启用该策略,可以对管理员账户启用UAC功能;如果禁用该策略,那么对管理员账户的UAC功能也会被禁用(对标准用户的UAC依然会启用)。

8)用于内置管理员账户的管理员批准模式

该策略决定了使用系统内建的Administrator账户登录的用户和进程是否受限于UAC。默认情况下,该策略是启用的,这意味着内建Administrator账户也受限于UAC,同时还受限于针对管理员账户的提升提示行为设置。如果禁用该设置,使用内建Administrator账户的用户和进程将无法受限于管理员批准模式,因此,也不受限于针对管理员账户的提升提示行为设置。

简单来说,如果希望内建 Administrator 账户也受制于 UAC
的限制,那么可以将该策略设置为“已启用”;如果希望内建Administrator账户不受UAC的限制,可以将该策略设置为“已禁用”。

9)允许UIAccess应用程序在不使用安全桌面的情况下提升权限

已经介绍了UIAccess程序的用途,并且可以通过策略同时提升此类程序。然而这就遇到了一个新问题,UIAccess程序在提升之前,无法与安全桌面进行交互,但对UIAccess程序进行提升的时候,还是需要出现安全桌面,这依然会造成不便。

因此,通过启用该策略可以在确保其他所有的程序都在安全桌面上提升的同时,让UIAccess程序的提升不通过安全桌面进行。当然,该策略只有在使用安全桌面的情况下才有意义,如果已经禁用了安全桌面,可以忽略该策略。

10)只提升签名并验证的可执行文件

该策略决定了系统对待不同类型的可执行文件的方式。如果希望禁止用户运行未经签名的或者未经验证的可执行文件,那么可以将该策略设置为“已启用”;如果不想禁止用户运行未经签名的或者未验证的可执行文件,则可以将该策略设置为“已禁用”,这也是Windows
7的默认设置。

3. UAC的高级设置技巧

通过上述几个策略的调整,相信UAC已经顺眼不少了。但对于使用不带组策略功能的Windows
7,或者通过调整策略依然觉得不满意的用户,可以试试使用下面介绍的几个技巧。

1)临时绕过UAC

有时候,我们可能要面临这样的问题:需要在短时间内调整大量的系统设置(例如,
Windows刚安装好后的配置阶段),但每次都通过UAC的提升显得有些多余。这时候,很多人可能会觉得应该先临时禁用UAC,等所有的设置都修改完之后再将其启用。可这存在一些不足:启用和禁用UAC都需要重新启动系统才能生效,这样显得效率很低。

另外,如果在禁用UAC后还需要运行Internet Explorer查阅资料,因为没有了UAC的保护,网页中如果包含恶意代码,很可能会危及系统安全。

其实有更好的办法,不用禁用UAC,也不用重新启动系统,一样可以临时绕过UAC,具体操作如下:

  1. 在 Windows 的任务栏空白处单击鼠标右键,选择“任务管理器”,打开任务管理器。
  2. 切换到“进程”选项卡,在“Explorer.exe”进程上单击鼠标右键,选择“结束进程”。这样,Windows任务栏、桌面图标,以及所有打开的资源管理器窗口都会消失。
  3. 依然是在任务管理器的“进程”选项卡下,单击“显示所有用户的进程”按钮,并接受UAC提升提示。
  4. 在任务管理器窗口的“文件”菜单下单击“新建任务(运行)”命令,并在随后出现的“创建新任务”对话框中输入“explorer”后按回车键。
  5. 接下来,Windows任务栏以及桌面图标会重新出现。在这种情况下,通过控制面板或者其他方式执行的程序或者选项不需要提升,直接就具有管理员权限。

这是一个很方便的技巧,它实现的原理是什么?在介绍之前,首先需要明白两个概念:父进程、子进程。顾名思义,如果一个程序A启动了另外一个程序B,那么这两个程序就是父子关系,其中程序A是程序B的父进程,而程序B是程序A的子进程。举一个更形象的例子吧,如果运行cmd.exe,打开命令提示行窗口,然后在命令提示行窗口中执行一个命令行程序,例如ping.exe,这时候cmd.exe就是ping.exe的父进程,而ping.exe就是cmd.exe的子进程。

在启用UAC的情况下,当用户登录Windows的时候,Windows首先会用标准令牌启动explorer.exe,该进程就是俗称的Windows外壳,也可以理解为初始进程(其他所有用户进程的父进程),同时我们看到的Windows任务栏、桌面图标、“开始”菜单都是由Windows外壳产生的。而在登录后,如果需要通过“控制面板”设置某个系统选项,因为“控制面板”也是Windows外壳的一部分,又因为Windows外壳是使用标准令牌启用的,因此,“控制面板”中的选项(Windows
外壳的子进程)也会使用标准令牌启动,而因为权限不足,我们就会看到UAC提升对话框。

在步骤3中,因为单击了“显示所有用户的进程”按钮,这个按钮会提升任务管理器,使其具有管理员权限。在步骤4中通过Windows任务管理器运行的Windows外壳就成了具有管理员权限的任务管理器的子进程,进而得到了一个具有管理员权限的Windows外壳。那么在提升了权限的Windows外壳上修改其他系统选项的时候,自然也就不需要额外的提升了。

如果修改完设置需要重新打开标准权限的Windows外壳,又该怎么办?可以进行下列操作:

  • 在任务栏空白处单击鼠标右键,选择“任务管理器”,打开任务管理器窗口(请考虑,这个任务管理器进程具有怎样的权限)。
  • 在“进程”选项卡下结束被提升的 explorer.exe 进程,接着关掉任务管理器窗口。
  • 按下“Ctrl+Alt+Del”组合键,打开 Windows 安全界面,然后单击“启动任务管理器”按钮,随后会自动打开任务管理器窗口(这个任务管理器进程的权限又是怎样的?)。
  • 在“文件”菜单下单击“新建任务(运行)”命令,并在随后出现的“创建新任务”对话框中输入“explorer”,按回车键。

2)让UAC和文件操作和平共处

早在Windows Vista的测试阶段曾有测试者戏言,要想在Windows
Vista的桌面上彻底删除一个文件,包括清空回收站在内,需要7个步骤。在早期的测试版中确实存在这个问题,不过随后的正式版已经大幅度简化了这类操作。

然而在Windows 7中操作文件的时候,尤其是在操作系统盘的文件时,我们可能还会经常看到 UAC
的“提升”对话框。这主要是因为,为了保证安全性,Windows
操作系统对系统文件设置了比较严格的权限限制,因此,很多文件在使用标准账户或者管理员账户登录后并不能直接修改或者访问(具体的限制则取决于具体的文件用途,以及安全性要求),而是需要在提升后才可以进行。

如果只是偶尔需要对这类文件进行操作,那么提升一下也未尝不可。但如果需要在短时间内操作多个系统文件,那么每个文件操作时都需要提升肯定很烦琐。这时候我们可以临时绕过UAC,不过这样并不好,毕竟通过前面介绍的方法,我们可以让执行的所有程序都暂时绕过UAC,这里我们只是需要对文件进行操作而已。因此,我们只需要以管理员身份启动Windows资源管理器程序就可以了,方法如下:

  • 打开“计算机”窗口,按下“Alt”键以显示菜单栏。
  • 依次单击“工具”→“文件夹选项”→“查看”,打开“文件夹选项”对话框的“查看”选项卡。
  • 选中“在单独的进程中打开文件夹窗口”选项,然后单击“确定”按钮。
  • 随后关闭所有已经打开的Windows资源管理器窗口。
  • 打开“开始”菜单,在搜索框中输入“资源管理器”,在显示的搜索结果中用鼠标右键单击“Windows 资源管理器”的快捷方式,选择“以管理员身份运行”,并接受UAC的提升提示。
  • 随后打开的Windows资源管理器窗口就已经具有管理员权限,在该窗口中,我们可以对绝大部分系统文件进行操作,而不用担心权限问题。不过依然有些文件无法操作,因为即使是管理员账户,也没有足够的权限,那些文件只能由系统账户访问,不过在给自己分配相应的权限后,即可访问它。

4. 解决应用程序兼容问题

除了烦琐的操作,很多人对UAC的不满还表现在应用程序的兼容性方面,因为原本可以在Windows
7下运行的老程序,因为UAC的存在,使用时可能会遇到各种问题。

目前全面兼容Windows
7的新版应用程序遇到这类问题很少,因此,我们主要应该关心一下老版本的程序,如果某个程序在老版本Windows中可以正常运行,但在Windows
7下无法运行,或者可以运行,但是容易出现一些奇怪的故障,那么可以考虑UAC的影响。

例如,某个程序可以在Windows
7下正常运行,但每次运行程序并修改了程序的设置后,设置都无法保存,下次启动该程序依然会使用修改前的设置,这可能就是UAC在碍事;如果一个程序可以在Windows
7下正常运行,但是某些功能无法使用,也有可能是UAC的影响。如何在启用UAC保证系统安全的前提下让这类程序正常工作?

注意虽然兼容Windows 7的应用程序可能不会因为UAC的存在而无法运行,但这并不意味着兼容Windows
7的程序在运行的时候不需要提升,这主要取决于程序的类型,以及程序想要进行的操作。例如,一个兼容Windows
7的多媒体播放软件,不需要提升就可以正常播放影音文件,但另一个兼容Windows
7的磁盘碎片整理软件,因为是工作在系统的底层,需要对文件系统进行操作,尽管它兼容Windows 7,但依然需要提升后才可以正常工作。这属于正常的设计特性。

那么这里就存在另外一个问题,有些程序在运行的时候会要求提升,只要提升后就可以正常工作在Windows
7下。但有些程序(主要是老程序)在运行的时候并没有主动要求提升,并且也无法正常使用(例如,无法保存设置信息),只有提升后才会正常。为什么有些程序可以自动要求提升,有些则不行?其实这是应用程序清单文件在起作用。

默认情况下,兼容Windows 7的应用程序使用了一个包含运行级别信息的应用程序清单文件(Application
Manifest),该文件帮助操作系统了解该程序所需的特权。

应用程序清单文件通过下列方式定义应用程序需要的特权:

  • RunAsInvoker使用和当前用户同样的特权运行应用程序,这样,任何用户都可以运行该程序。对于标准用户或者隶属于管理员组的用户,该程序会使用标准访问令牌运行,只有在启动该程序的父进程具有管理员访问令牌的时候,程序才会使用更高的特权运行。例如,如果我们运行了一个提升后的命令提示符窗口,然后从该窗口下启动了一个程序,该程序才会以管理员访问令牌运行。
  • RunAsHighest使用当前用户具有的最高特权运行应用程序,这样的程序可以被管理员用户和标准用户运行。可以被程序执行的任务取决于用户的特权,对于标准用户,程序会使用标准访问令牌运行;对于隶属于拥有更高权限的用户组,例如Backup Operators组、Server Operators组或者Account Operators组的用户,程序会使用只包含用户当前具有的特权的访问令牌运行;对于隶属于管理员组的用户,程序会使用完整的管理员令牌运行。
  • RunAsAdmin使用管理员特权运行应用程序,只有管理员才能运行该程序。对于标准用户或者隶属于拥有更高权限用户组的用户,只有在用户可以通过提升获取更高的权限以进行提升,或者程序通过提升后的父进程启动的情况下(例如,通过提升后的命令提示符窗口运行该程序),该程序才可以运行;对于隶属于管理员组的用户,该程序会使用管理员访问令牌运行。

清单文件是一个纯文本文件,可以使用任何文本编辑软件(例如,Windows自带的记事本程序)打开。打开某个软件的清单文件(假设软件的名称是app.exe,那么对应的清单文件就是app.exe.
manifest)后,可以看到下面的内容:

其中

这一行注释表示下面开始声明该程序所需的权限,而其中的“level=“requireAdministrator””一行则明确表示如果要运行该程序,必须使用提升后的管理员权限。

因此,当我们在Windows
7下试图执行一个程序的时候,系统首先会查找该程序有没有可用的清单文件,如果有,则按照清单文件中的声明来执行,例如,如果清单声明了需要管理员权限,那么系统就会显示UAC提升提示对话框供我们操作;如果不存在清单文件,或者清单文件中声明的权限属于标准用户的权限,那么不需要提升,就可以自动开始执行该程序。

这样就很明了了,那些因为UAC而无法在Windows
7下正常运行的程序,主要就是因为没有提供用于声明所需权限的清单文件。那么这种问题该怎么解决呢?手工编写清单文件吗?不用那么麻烦,因为在Windows
7下可以用两种方法让程序以管理员方式运行。

1)以管理员身份运行程序一次

有时可能偶尔需要用管理员身份运行程序一次,而平时根本不需要使用该程序,或者使用标准用户身份运行即可。对于这类程序,可直接用鼠标右键单击程序的可执行文件或快捷方式的图标,并从右键菜单中选择“以管理员身份运行”命令,如图所示。

2)配置兼容模式总是使用管理员身份运行

如果某个程序是需要经常运行的,那么每次都按照之前介绍的方法进行操作未免有些烦琐,这时候可以通过配置兼容性模式让程序每次都使用管理员身份运行。

在程序对应的可执行文件或者快捷方式的图标上单击鼠标右键,选择“属性”,打开“属性”对话框,接着选择“兼容性”选项卡,随后可以看到如图所示的界面。

在“兼容性”选项卡中选中“特权等级”选项下的“以管理员身份运行此程序”选项,这样以后每次直接双击该程序的可执行文件或者快捷方式时,UAC都会显示提升提示供我们操作。注意,上面的方法只能对当前登录的用户有效,如果这个程序本机的其他用户也需要使用,为了避免每个人都自己设置兼容模式的麻烦操作,可以首先单击“更改所有用户的设置”按钮,在提升之后再选中“以管理员身份运行此程序”选项,这样其他用户在以后不用自己设置也可以使用。

3、禁用UAC

找开控制面板中的系统和安全。

点击管理工具。

点击系统配置。

弹出系统配置窗口后点击工具标签,选择“更改UAC配置”,点击右下角的启动。

弹出窗口后,拉动滑块即可以进行设置。

直接输入命令的简单方法:

  1. 在运行里输入msconfig,会直接出现系统配置的窗口。
  2. 在运行里直接输入X:\\Windows\\System32\\UserAccountControlSettings.exe(X为系统盘符),可以直接弹出UAC设置的窗口。

三、文件和注册表虚拟化

1、虚拟化简介

如果某个程序在运行过程中需要将自己的配置信息保存到Windows目录下,这种行为到底好不好?毫无疑问,这样并不好,原因有三个:

  • 随意给系统文件夹中写入新文件或者修改系统文件,可能会影响到系统的安全性或者稳定性。
  • 随意给系统文件夹中写入程序自己的文件,容易让系统文件夹下的文件显得混乱,不易于管理。
  • 现在的操作系统已经是多用户的了,而在多用户系统中,如果希望应用程序也能实现多用户的特性(同一台计算机上不同的用户对同一个程序配置可以保持相对独立,其中一个用户的设置不会影响到另一个),那么程序的配置信息应该保存在每个用户自己的配置文件夹中,而不是将所有的信息都保存在Windows目录下。

然而事实是,虽然多用户操作系统已经发展了多年,而且大部分人都已经在使用多用户操作系统,可是一些第三方软件开发人员依然存在一些不好的习惯,例如软件的默认安装位置是C盘根目录(哪怕当前系统根本没有安装在C盘),并且安装程序根本不允许选择其他的安装位置;或者软件会把配置信息以.ini
或者作用类似的配置文件的形式保存在Windows目录下(注册表是做什么用的?或者如果真的要让自己的软件更“绿色”,为什么不直接将软件的配置信息保存到软件安装目录下?);甚至一些软件的卸载程序根本不能将程序从系统中干净地卸载掉。

除了文件的保存位置,在注册表方面也存在类似的问题。例如,Windows的注册表中有一个名为“HKEY_CURRENT_USER”的根键,这个键的主要作用是保存一些和当前用户相关的配置信息,同时每个用户登录系统的时候,Windows都会根据该用户的配置文件,自动为用户创建HKEY_CURRENT_USER根键(也就是说,每个用户自己的HKEY_CURRENT_USER根键都是相对独立,并且互不干扰的)。按照设计,每个用户(无论是管理员账户还是标准账户)都可以对自己的
HKEY_CURRENT_USER
根键下的内容直接进行读写,不会受到权限的限制(对于标准用户,在运行regedit打开注册表的时候,并不会看到UAC提升对话框,这也正是此原因所在,因为在这种情况下,标准用户可以随意更改HKCU根键的内容,并不需要提升权限)。然而有些程序的开发人员没有意识到这一点,而将自己设计的程序的配置信息保存在HKEY_LOCAL_MACHINE,或者其他并非所有的账户都有权限读写的注册表键下,这就导致很多程序只有管理员账户才可以安装和运行,而标准账户甚至连运行都受到了限制。

为了解决文件和注册表中存在的这种问题,微软在Windows
7中使用了文件虚拟化和注册表虚拟化技术。简单来说,这种技术类似于一种“重定向”操作,例如,如果某个程序需要在Windows目录下写入文件,那么Windows会自动将写入操作重定向到另外一个专用的文件夹。但是对于这个程序来说,它确实将文件写入到了Windows目录下,同时在该程序试图读取Windows目录下的这个文件的时候,Windows也会将读操作重定向到同一个文件夹中。这样对于这个程序来说,它可以在Windows目录下读写文件,但实际上读写的文件并不在Windows目录中。

文件虚拟化和注册表虚拟化的工作原理和生效方式类似,但因为对文件的操作比较直观,因此,下面主要以文件虚拟化为例进行介绍。

2、使用虚拟化

如何确定虚拟化技术在生效?让我们试试看进行这样的操作:

  • 运行一个兼容Windows 7的程序,例如,Windows 7自带的记事本程序,在记事本中输入一些文字,然后保存该文件。
  • 在选择保存位置的时候,选择当前系统的Windows目录,然后保存。
  • 程序会立即做出报告:无法给Windows目录下写入文件,同时询问我们是否将该文件保存到其他位置(“文档”文件夹位于当前用户的配置文件中,而用户对于自己的配置文件夹自然是具有所有的权限的),如图所示。

在上述这种情况下,虚拟化技术并没有生效,这主要是因为新版本的兼容Windows 7的程序可以有效地处理 Windows
在文件夹或者注册表权限方面的限制,那么老的不兼容Windows 7的程序会怎么样?

让我们再试试看使用一个老版本的程序进行同样的操作,例如,将Windows XP中的notepad.exe文件复制到Windows
7系统中运行,然后尝试将一个文件保存到Windows目录下。此时没有任何提示信息,成功地保存好了。难道老程序可以绕过Windows目录的权限设置?

让我们用Windows资源管理器打开Windows目录,这里面并没有出现我们之前保存的Test.txt文件,那么这个文件到底被保存到哪里了?注意看资源管理器窗口的工具栏,上面多出了一个“兼容性文件”按钮,如下图所示。

单击这个按钮后,资源管理器窗口会自动进入到另外一个文件夹,如下图所示。

请留意地址栏显示的地址,以及文件夹中的内容。原来我们打算保存到Windows目录下的文件被重定向到这里了,同时这里可能还有很多其他文件和文件夹,这些都是被重定向的结果。

在重定向到的位置中,请留意地址栏的“VirtualStore(虚拟存储)”文件夹,该文件夹就是用于保存重定向内容的根文件夹。对于每个曾经被重定向过的位置,在该文件夹下都会有对应的子文件夹。例如,按照前面操作后,写入到Windows目录的文件被重定向,因此,VirtualStore
文件夹下会创建一个名为“Windows”的子文件夹,所有从系统Windows目录重定向的内容都会被写入到这里。

UAC的虚拟化重定向功能可针对下列位置的写入操作生效:

  • %ProgramFiles%。
  • %WinDir%。
  • %WinDir%\System32。
  • HKEY_LOCAL_MACHINE\Software。

假设某个程序需要将配置信息保存到Windows目录下,且该程序不兼容Windows
7,因为无法直接保存,如果没有虚拟化技术,程序可能会报错。但因为有了虚拟化技术,要保存的文件会被自动重定向,这样程序以为自己已经将配置文件保存到了Windows目录下,同时程序也确实可以从Windows目录下读取到这个配置文件。因此,原本可能无法在Windows
7下正常运行的程序因为虚拟化技术的存在,已经可以正常运行了。

另外,请留意上图中地址栏显示的文件夹地址,被虚拟化技术重定向的文件夹是位于当前用户的配置文件夹中的,这也就意味着每个用户登录到系统后,都有各自独立的虚拟化重定向文件夹,这样一个用户的配置不会影响另一个用户,这不仅保证了兼容性,也保证了安全。

注意:虚拟化技术只会对使用标准令牌运行的程序产生影响,对使用管理员令牌运行的程序无效。而且该技术并不能绝对保证所有不兼容的老程序可以在Windows
7下正常运行。

3、虚拟化对用户影响

按照设计,虚拟化技术应该是一个默默无闻的幕后英雄,因为该技术可以在用户没有察觉到的情况下改善老程序的兼容性,然而有时候可能会存在一些问题。

例如,文件虚拟化技术主要被应用到一些特殊的系统文件夹及其子文件夹中(例如系统盘根目录下的Windows文件夹或者Program
Files文件夹),然而这就存在一个问题,如果我们给系统盘的Program
Files目录下安装了一个下载软件,默认情况下,该软件下载的文件都会保存在程序的安装目录下,因为虚拟化技术的存在,有可能导致我们找不到下载好的文件。

其实这种问题也很好解决,只要用Windows资源管理器打开程序的安装目录,然后单击工具栏上的“兼容性文件”按钮即可。当然,更好的解决办法是配置这个软件,让软件将下载文件保存到其他位置。

四、管理存储的凭据

在Windows 7中,可以使用凭据管理器将当前用户用于自动登录到服务器、Web站点,以及其他程序的凭据都保存起来。

这些凭据被保存在一个电子保管库(名为Windows保管库)中,这样可方便地访问重要的资源,而不需要每次访问都反复输入自己的凭据。同时,这样做还可以实现更简单的单点登录,只需要使用密码登录到自己的Windows账户,即可直接登录各种已经保存了密码的网络资源,用一个Windows账户密码管理其他所有资源的密码。

Windows 7的凭据管理器支持下列三种类型凭据的存储:

  • Windows凭据用于进行标准Windows身份验证(NTLM或Kerberos)使用的凭据,并可包含资源位置、登录账户名称和密码信息;
  • 基于证书的凭据一种可包含资源位置,并使用保存在证书管理器中个人存储中的证书进行身份验证的凭据;
  • 普通凭据基本或定制的身份验证技术所用的凭据,其中可包含资源位置、登录账户名称和密码信息;
1、添加Windows或普通凭据

每个用户账户都有独立的Windows保管库。Windows保管库中的项目都保存在用户的配置文件设置中,并且其中包含用于登录到受密码保护的资源所需的信息(例如文件服务器的访问路径)。

要给当前登录用户的Windows保管库中添加项目,请执行下列操作:

使用希望管理Windows保管库项的用户账户登录。打开“开始”菜单,并单击菜单右上角的当前账户的图片,在随后出现的窗口中,单击左侧的“管理您的凭据”链接,随后可以看到如图所示的凭据管理器窗口。

按照要创建的凭据类型,分别单击“添加Windows凭据”或“添加普通凭据”链接,随后使用提供的选项配置凭据,如图所示。

这里需要设置的字段包括:

  • Internet地址或网络地址需要该Windows保管库项登录到的网络或Internet资源,这里可以输入服务器的名称,例如FileServer;或输入Internet资源的完全合格的域名,例如,www.microsoft.com;或使用包含通配符的地址,例如*.microsoft.com;
  • 用户名指服务器需要的用户名,例如Server\User,或者user@server.com;
  • 密码指服务器需要的密码。这里最容易被忽略的是,如果在服务器或服务上更改了密码,用户还必须更改自己 Windows 保管库中的密码。如果忘了更改 Windows保管库中的密码,反复尝试登录或连接到服务器或服务,可能导致账户被禁用;

单击“确定”按钮保存凭据。

2、添加基于证书的凭据

用户配置文件中保存的个人证书信息包含了颁发给通过身份验证的用户的证书。在为用户添加了证书后,即可为需要使用证书才能访问的资源创建凭据。

要为当前登录的用户的Windows保管库内添加基于证书的项,请执行下列操作:

  • 在单击“添加基于证书的凭据”链接。在“Internet地址或网络地址”字段中输入要配置该Windows保管库项的网络或Internet资源的名称,这里可以输入服务器名称、Internet资源的完全合格的域名或包含通配符的地址。
  • 单击“选择证书”按钮,在“选择证书”对话框中单击访问资源时使用的个人证书,然后单击“确定”按钮。
  • 再次单击“确定”按钮保存凭据。
3、编辑Windows保管库项

我们可以随时编辑Windows保管库项的内容,但是要注意,本地Windows保管库项只有在创建了这个项目的计算机上才可以看到。这意味着如果想要修改某项,就必须本地登录到创建该项的计算机上。

要编辑用户的Windows保管库项,请执行下列操作:

  • 使用希望管理Windows保管库项的用户账户登录。打开“开始”菜单,并单击菜单右上角当前账户的图片,在随后出现的窗口中单击左侧的“管理您的凭据”链接。在凭据管理器页面中可以看到所有的凭据按照类型进行分组。
  • 单击希望编辑的凭据项,单击“编辑”按钮。
  • 根据需要为用户名和密码或该凭据关联的证书进行修改,然后单击“保存”按钮。
4、备份和还原Windows保管库

要备份用户保存的凭据,可以直接备份用户的Windows保管库。备份了Windows保管库后,即可通过还原Windows保管库的方式恢复凭据,或转移到新计算机上。在大部分情况下,我们可以将Windows保管库备份到可移动存储介质中。

要备份用户的Windows保管库,请执行下列操作:

  • 使用希望管理Windows保管库项的用户账户登录。打开“开始”菜单,并单击菜单右上角的当前账户的图片,在随后出现的窗口中单击左侧的“管理您的凭据”链接。
  • 单击“备份保管库”链接。
  • 在存储的用户名和密码页面中,单击“浏览”按钮。使用“将备份文件保存为”对话框选择保存位置,并指定凭据备份文件的名称。凭据备份文件会保存为.crd 文件扩展名。单击“保存”按钮。
  • 单击“下一步”按钮,按下“Ctrl+Alt+Delete”组合键切换到安全桌面。在看到提示后,输入并确认该凭据备份文件的密码。
  • 单击“下一步”按钮,然后单击“完成”按钮。

要将用户的Windows保管库还原到同一计算机或不同的计算机,请执行下列操作:

  • 使用希望管理Windows保管库项的用户账户登录,按照前面介绍的方法打开凭据管理器。
  • 在凭据管理器页面中单击“还原保管库”按钮。
  • 在存储的用户名和密码页面中,单击“浏览”按钮。使用“打开备份文件”对话框选择保存了凭据备份文件的位置和文件名,然后单击“打开”按钮。
  • 单击“下一步”按钮,按下“Ctrl+Alt+Delete”组合键切换到安全桌面。在看到提示后,输入凭据备份文件的密码。
  • 单击“下一步”按钮,然后单击“完成”按钮。
5、删除Windows保管库项

如果不再需要某个 Windows 保管库项,我们可以将其删除。要删除用户的 Windows保管库项,请执行下列操作:

  • 使用希望管理Windows保管库项的用户账户登录,打开凭据管理器。
  • 单击希望删除的凭据项。
  • 单击“从保管库中删除”按钮,在要求确认时单击“是”按钮。

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值