IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

大白狗的封装札记 - 2 基础知识

    [复制链接]
Skyfree 发表于 2019-11-2 17:45:22 | 显示全部楼层 |阅读模式

本文系IT天空原创文章,未经许可请勿转载,谢谢合作!

日常拖更,催更无效。

本打算于本篇写封装操作的,但写删删写总觉着缺点啥。直到看到有人提问“封装到底有个什么用?”,忽然明白对于基础知识薄弱的学习者而言,即便对着详细流程一比一的操作一遍,也只达成了“临摹”效果。若想做到真正的融汇贯通、举一反三,必须有扎实的基础知识,知其然亦知其所以然,才能应对后续形形色色的问题。

本篇札记对系统封装过程中的知识要点做出总结,请大成人士请跳过。




1 - 关于封装



1.1 封装是个啥?

系统封装:Sysprep,单词拆分为:Sys(系统)prep(准备),直接用途是将系统重置为准备状态。

Windows 的系统状态大致上可以分为“准备状态”与“使用状态”。系统映像里的操作系统处于“准备状态”,日常使用的系统处于“使用状态”。处于准备状态的系统通过部署进入使用状态,而使用状态的系统可以通过封装重置为准备状态。(如下图示意)
2019-10-30_11-30-49.png


准备状态的系统不包含目标计算机上的各项信息,当准备状态的系统部署到目标计算机后,随着部署过程的推进,会根据目标计算机的硬件配置与使用环境等开始变更系统的驱动、注册表等系统文件(数据),从而在系统部署完成后成为适合目标计算机的使用状态的系统。准备状态与使用状态的系统最明显的外在区别,在于前者首次开机后进入系统部署流程,而后者进入使用者登录界面。

封装的作用是将系统重置为准备状态(待部署状态)。



1.2 封装图个啥?

对于原版系统而言,装完系统并不是结束而是开端,随后需要打补丁、装驱动、装软件、做调整等一系列流程。这个流程朴实无华且枯燥,每装一次系统重复一次。那么如果一次性面对大量计算机,这个流程简直蠢哭了。
2019-10-30_17-47-50.png


而有了系统封装技术的加持,允许预先在系统中做好一系列工作,再将这个系统封装起来,而后批量部署到n台计算机上。
2019-10-30_17-48-47.png


封装的目的是减少重复劳动、提高工作效率。



相关问题

系统封装技术的由来?
系统封装技术(Sysprep)是微软官方技术,并非第三方的凭空创造。NT6代系统中,微软将 sysprep.exe 工具放置于 系统盘:\Windows\System32\sysprep\sysprep.exe,成为了重要的系统自带工具之一。而像 Easy Sysprep v5 这类国内常见的系统封装辅助工具,则是以微软封装工具为核心所做的拓展。

封装的系统稳定吗?
我曾在不同的时期看到不同代的技术员在反复提这个问题。首先你不要怀疑封装技术的稳定性,封装是微软官方技术之一。那么为什么会有不稳定的状况?这是因为我们在封装系统时向系统添加了各种内容,同时也受制于制作者本身的技术能力。所以你要问封装技术稳定吗,稳定(除非印度人瞎**改);而如果要问封装出来的系统稳定吗,这个就得看添加/修改/删除了什么以及制作者功底了。

系统封装兼容性的发展
最早期的系统封装只能用于同系统配置的计算机,例如NT5代系统(2K/XP等),NT5没有通用的硬件抽象层(HAL)、没有通用的AHCI驱动、不会自动处理驱动,通用性较差,在诸多前辈的努力下才达成了通用性。而NT6代(Vista/7/8/10等)系统则拥有通用的HAL、通用的AHCI/USB3/NVME驱动、会自动处理源计算机驱动,并可以通过DISM达成离线打补丁、添加驱动、增删组件等一系列操作,进一步降低了封装难度并显著提高了系统部署的通用性。

系统封装与系统映像有什么区别?
系统封装是将系统重置为准备状态的过程,系统映像是将系统打包成映像文件的过程,虽然一先一后但并没有绝对关联。例如点了份外卖,制作饭菜=系统封装、打包外卖=制作映像、外卖小哥=映像恢复工具、吃饭=系统部署,外卖打包方法和派送速度会影响用户体验,但毕竟与厨子炒菜有本质区别。所以封装的本质是系统重置,而制作系统映像是个打包过程,请不要再将制作映像理解为封装了。很多老手经常说“封装成映像”,意思是说“封装系统并制作为映像”,新手不要混淆为封装即制作映像。

系统封装部署与系统克隆的区别
系统封装是将使用状态的系统重置为准备状态,而后通过部署安装到目标计算机中并进入使用状态。(微软官方技术)
系统克隆是将使用状态的系统直接克隆到其他计算机上。(第三方技术,微软官方对此不推荐)
两者都会处理系统驱动,封装由微软技术解决,克隆由操作者解决。然而手动卸载驱动无法达成微软方式的精准,好在系统本身并不是精密构造,对于问题的兼容性是极高的(至少印度人开发之前是这样的)。相对来说系统克隆可以保全系统中的所有设置项目,实装速度略优于封装部署,但兼容性更依赖操作者能力,且SID等问题难于解决。系统封装部署有完善的官方技术文档支持,而系统部署实际就是一个最小化的系统全新安装过程,兼容性较好,但由于系统被初始化等原因,并非所有系统配置均会被记录。

系统克隆与 Ghost 的关系
本札记主要是对于系统封装的,对系统克隆的话题不会过多讨论,但这个问题仍要予以澄清。多年来N多人无法区分系统克隆、系统封装部署、Ghost系统等名词,混淆其意并妄下结论。上一个话题已经说明了系统封装部署与系统克隆的本质区别,上上个话题说明了映像的作用。无论是封装还是克隆均是方法,而Ghost是映像备份与恢复工具,是饭菜与打包盒的关系。封装=米饭、克隆=馍、Ghost=圆的打包盒、ImageX=方的打包盒,我特么乐意咋打包咋打包,你凭啥说圆的打包盒里一定是馍??

可以在封装的系统中集成驱动程序吗?
其实在没有综合驱动包之前,在封装的系统中直接集成驱动才是日常操作。但随着硬件的逐步复杂,硬件间驱动冲突、驱动间版本冲突等问题的增多,直接将驱动集成到系统的方法出现了各种各样的问题,且非常不便于驱动的更新与修正。而硬件智能识别与安装技术的发展,使外挂驱动包至目标计算机上再安装的方法逐步成为主流。不过集成驱动到系统的方式目前仍有条件下是使用的,例如集成了特定USB3驱动的 Windows 7 系统映像。






评分

参与人数 4活跃 +15 技术 +1 收起 理由
ahxx + 5 精品文章,很给力!
ycfnxwl + 5 精品文章,很给力!
佩奇 + 5 支持原创!
xiaoq1112 + 1 精品文章,很给力!

查看全部评分

最近访问 头像模式 列表模式
 楼主| Skyfree 发表于 2019-11-2 17:45:23 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

本文系IT天空原创文章,未经许可请勿转载,谢谢合作!

2 - 关于账户



2.1 内置管理员账户(Administrator)

说到封装就一定要说说 Administrator。Administrator 是 Windows 内置管理员账户,默认处于禁用状态。

内置管理员账户默认处于禁用状态是 Windows 出于系统安全考虑所作出的决策,可能是因为 Win2K 时期默认使用 Administrator 账户带来了诸多的安全隐患,自 WinXP 起 Administrator 就默认禁用了。微软推荐用户自建一个管理员账户来管理计算机,而不是直接使用 Administrator。(与 Linux 安全策略不推荐用户直接使用 root 账户如出一辙)

自建管理员账户与 Administrator 的权限基本一致,但 Administrator 在对系统程序、文件、数据方面的操作限制更少,毕竟前者是普通账户+管理权限,后者是天生的管理者账户。不过就日常使用来说自建管理员账户权限一点都不少,不用担心因权限问题对日常使用造成影响。



2.2 Administrator 与审核模式

我们已经在第一章第7节中接触到了通过 Ctrl+Shift+F3 直接开启 Administrator 账户的方法(俗称“三键法”),通过这种方法使用 Administrator 所登录到的系统环境在微软官方文档中被称做“审核模式”。审核模式是微软官方推荐的封装环境。

7-初始化系统-1内置管理员方式 (4).png


在审核模式下,进入桌面会自动运行 sysprep.exe 工具,等待你的封装操作。而 Administrator 只是被临时开启的,如果此时查看用户账户管理程序,会发现 Administrator 账户是处于禁用状态的。换句话说,虽然可使用 Administrator 登录到审核模式环境,但 Administrator 的状态仍是禁用的,这是审核模式的特有状态。

2019-10-30_21-20-03.png


然鹅,虽然“审核模式”是微软官方推荐的系统封装环境,但并不是唯一环境。

可以用其他方法开启 Administrator(即使用 Administrator 但不启用审核模式),如:
(1)部署中使用命令开启 Administrator;
(2)新建用户,开启 Administrator,登录 Administrator,删除刚才建立的账户。

也可以直接自建管理员账户来封装,实践证明这种方式在某些印度BUG下的表现优于 Administrator。

知识是固定的,而方法是变通的。



2.3 账户与OOBE

系统与账户是相互独立又有关联的。要操作 Windows 系统需要使用账户进行登录,如果 Windows 是一间工房,则账户相当于进去工作的工人。Windows 账户又分为“系统账户”与“用户账户”两种,系统账户如 System,用户无法使用其登录,但系统却可以以此身份执行更为底层的操作;而用户账户就是我们一般使用的账户,可以被登录,登录后可以对做各项操作。综上,明确一点:有用户账户登录系统才能进行日常操作。

OOBE(Out-of-box experience),直译为“开箱体验”,对于 Windows 而言即是第一次使用系统时询问你诸如语言类型、所在时区、连接网络、隐私设置、用户账户等的过程。OOBE 过程中的一个重要环节是“新建用户账户”。为了更加快速的完成系统部署,OOBE 可以通过配置无人值守而直接跳过,而一旦 OOBE 被跳过则“新建用户账户”也会一并被跳过,如果此时系统内没有处于启用状态的账户,则将进入一个无账户可登录的尴尬局面。

那么,选择以什么用户封装、以什么用户登录、是否跳过 OOBE,成了一个相互关联的问题。下面来看几种常见的方式:
2019-10-30_20-43-40.png

(自上而下1~4)

方式1与4基本相同,区别在于1使用了内置管理员而4使用了自建管理员,但二者均为部署后直接使用封装前的账户来登录。不同的是由于 Administrator 会在封装后被自动禁用,需要在部署时将其启用。因为二者均保证了系统内有可用账户,所以直接跳过了 OOBE。

方式2与3基本相同,区别在于 OOBE 时手动或是自动建立账户而已。二者在封装时均使用了 Administrator 账户,而封装后 Administrator 被自动禁用,至 OOBE 时系统内已无处于开启状态的用户账户,则 OOBE 不可跳过且 OOBE 时需要创建新用户。

方式1与4的流程简单粗暴,不经 OOBE 使系统部署时间进一步缩短。方式1直接使用了 Administrator 来登录,可能会带来一定的安全隐患。方式2是微软原版的方式,Administrator 默认禁用,用户可根据自己的喜好来创建新账户。方式3与2的区别是自动根据无人值守配置来创建账户,



相关问题

审核模式下,需要手动取消 Administrator 的禁用状态吗?
如果目的只是为了开启内置管理员,很抱歉这个操作并没有太大意义。无论是用“三键法”或是其他方法开启 Administrator,Administrator 账户都会在封装后进入禁用状态。为什么会这样其实不难理解,毕竟系统部署是最小化的系统全新安装,既然是系统全新安装那么出于安全考虑 Administrator 的状态一定会被还原至默认值。

如何使用命令开启 Administrator 账户
注意,执行这个命令需要足够的系统权限,例如管理员账户或System账户权限。
  1. net user Administrator /active:yes
复制代码


OOBE 时自动创建的用户为什么要密码?
微软出于安全考虑,对于自动创建的空密码账户,首次登录时会硬性要求创建密码,这个是无法跳过的。
但可自动创建带密码的新账户并设置其自动登录(至少1次),以完成后续的部署操作。

自动登录必须要设置吗?
注意,只有在 OOBE 时自动创建的空密码账户才会被要求在第一次登录时必须输入密码。而对于在封装前就建立好的账户(例如 Administrator、自建管理员账户)即便没有密码也不会在首次登录时被强制要求输入。基于上述条件,当系统内只有一个无密码账户时(处于启用状态),系统会自动使用这个账户登录,所以“自动登录”功能是除非必要无需设置的。

Default0 用户是怎么回事
当跳过了 OOBE,而系统又没有处于启用状态的用户账户时,一般会卡在用户登录页面无法继续。
而 Win10 在这种条件下可能自动启用 Default0 用户用于登录(未亲测)。




点评

有个问题想问一下 ES5封装 用户选项卡下的 启用admin账户选项开启后,部署系统,然后oobe新建用户,admin账户会开启吗?我测试没有开启.这个开启admin账户是在什么情况下用的? 另外:我用ES5的时候,部署选项卡中部署控  详情 回复 发表于 2020-4-28 21:57
通过搞事情我发现,Admin账户没启用注销账号就会有defaultuser0,Admin账户启用未设置密码注销就会进不去系统,还会有另一个Administrator  详情 回复 发表于 2020-3-27 08:08
我试过,不设置任何账户部署后登录界面会显示其他用户,并给两个输入框,一个是用户名,一个是密码,但不管输入什么都无法登陆,只能进PE解锁Administrator  详情 回复 发表于 2020-3-25 17:11
审核模式下,注销后,Admin被禁用,然后就是defaultuser0了(注:不是Default0)  详情 回复 发表于 2020-3-8 15:46
 楼主| Skyfree 发表于 2019-11-2 17:45:24 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

本文系IT天空原创文章,未经许可请勿转载,谢谢合作!

3 - 无人值守



3.1 无人值守配置文件

在系统部署过程中,有些选项会等待手动设置,这些选项在批量部署计算机系统时造成了不必要的重复劳动。为了解决这个问题,微软给出了“无人值守应答文件”,将设置项目的“答案”写入此文件后,系统遇到对应选项时会自动使用答案来“应答”,从而无需手动操作,达成“无人值守”。

至NT6代,无人值守配置文件升级为 xml 格式,功能更加强大。
(下面为 ES5 的无人值守应答文件)
  1. <?xml version='1.0' encoding='utf-8'?>
  2. <unattend xmlns="urn:schemas-microsoft-com:unattend">
  3.     <settings pass="specialize">
  4.         <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5.             <RunSynchronous>
  6.                 <RunSynchronousCommand wcm:action="add">
  7.                     <Order>1</Order>
  8.                     <Path>%SystemDrive%\Sysprep\ES5\EsDeploy.exe /InDeploy</Path>
  9.                     <Description>InDeploy</Description>
  10.                 </RunSynchronousCommand>
  11.             </RunSynchronous>
  12.         </component>
  13.         <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  14.             <CopyProfile>true</CopyProfile>
  15.             <RegisteredSkyfree>Skyfree</RegisteredSkyfree>
  16.             <Registereditsk.com>itsk.com</Registereditsk.com>
  17.             <TimeZone>China Standard Time</TimeZone>
  18.             <ComputerName>SK-20191031RFBJ</ComputerName>
  19.         </component>
  20.         <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  21.             <Identification>
  22.                 <JoinWorkgroup>WorkGroup</JoinWorkgroup>
  23.             </Identification>
  24.         </component>
  25.     </settings>
  26.     <settings pass="oobeSystem">
  27.         <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  28.             <FirstLogonCommands>
  29.                 <SynchronousCommand wcm:action="add">
  30.                     <Order>1</Order>
  31.                     <CommandLine>%SystemDrive%\Sysprep\ES5\EsDeploy.exe /Logon</CommandLine>
  32.                     <Description>FirstLogon</Description>
  33.                 </SynchronousCommand>
  34.             </FirstLogonCommands>
  35.             <LogonCommands>
  36.                 <AsynchronousCommand wcm:action="add">
  37.                     <Order>1</Order>
  38.                     <CommandLine>%SystemDrive%\Sysprep\ES5\EsDeploy.exe /Desktop</CommandLine>
  39.                     <Description>Desktop</Description>
  40.                 </AsynchronousCommand>
  41.             </LogonCommands>
  42.             <OOBE>
  43.                 <NetworkLocation>Other</NetworkLocation>
  44.                 <ProtectYourPC>1</ProtectYourPC>
  45.                 <HideEULAPage>true</HideEULAPage>
  46.                 <HideWirelessSetupInOOBE>false</HideWirelessSetupInOOBE>
  47.                 <SkipMachineOOBE>false</SkipMachineOOBE>
  48.                 <SkipUserOOBE>false</SkipUserOOBE>
  49.             </OOBE>
  50.             <RegisteredSkyfree>Skyfree</RegisteredSkyfree>
  51.             <Registereditsk.com>itsk.com</Registereditsk.com>
  52.             <TimeZone>China Standard Time</TimeZone>
  53.                         <FolderLocations>
  54.                                 <ProfilesDirectory>D:\Users</ProfilesDirectory>
  55.                         </FolderLocations>
  56.             <UserAccounts>
  57.                 <LocalAccounts>
  58.                     <LocalAccount wcm:action="add">
  59.                         <Name>PCMgr</Name>
  60.                         <Group>Administrators</Group>
  61.                         <Password>
  62.                             <Value>abc123</Value>
  63.                             <PlainText>true</PlainText>
  64.                         </Password>
  65.                     </LocalAccount>
  66.                     <LocalAccount wcm:action="add">
  67.                         <Name>User1</Name>
  68.                         <Group>Users</Group>
  69.                     </LocalAccount>
  70.                     <LocalAccount wcm:action="add">
  71.                         <Name>User2</Name>
  72.                         <Group>Users</Group>
  73.                     </LocalAccount>
  74.                 </LocalAccounts>
  75.             </UserAccounts>
  76.             <AutoLogon>
  77.                 <Enabled>true</Enabled>
  78.                 <Username>PCMgr</Username>
  79.                 <Password>
  80.                     <Value>abc123</Value>
  81.                     <PlainText>true</PlainText>
  82.                 </Password>
  83.                 <LogonCount>1</LogonCount>
  84.             </AutoLogon>
  85.         </component>  
  86.     </settings>
  87. </unattend>
复制代码

.xml 文件的基本格式是以标记“<xx>...<xx/>”为一个段(或值),如:
  1. <Name>PCMgr</Name>
复制代码

标记也可以写在不同行:
  1. <Name>
  2. PCMgr
  3. </Name>
复制代码

标记还可以嵌套:
  1. <AutoLogon>
  2.     <Enabled>true</Enabled>
  3.     <Username>PCMgr</Username>
  4.     <Password>
  5.         <Value>abc123</Value>
  6.         <PlainText>true</PlainText>
  7.     </Password>
  8.     <LogonCount>1</LogonCount>
  9. </AutoLogon>
复制代码



3.2 无人值守配置项浅析

NT6无人值守配置文件的内容主要由阶段组件两种结构组合而成。

阶段包括 windowsPE、offlineServicing、generalizespecialize、auditSystem、auditUser、oobeSystem。一般而言,generalize=>封装阶段、specialize=>部署阶段、oobeSystem=>OOBE阶段。将组件插入到上述三个阶段中,即可完成对系统部署的无人值守。

那么 ES5 的无人值守配置文件解析如下:

<!-- 封装阶段 -->
<settings pass="generalize">
    <!-- Microsoft-Windows-PnpSysprep 组件 -->
    <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" ...>
        <!-- 不清理非当前设备 (驱动)  -->
        <DoNotCleanUpNonPresentDevices>false</DoNotCleanUpNonPresentDevices>
        <!-- 保留所有已安装的设备 (驱动)  -->
        <PersistAllDeviceInstalls>false</PersistAllDeviceInstalls>
        <!-- 当且仅当源计算机与目标计算机硬件完全一致时才将上述二值设置为 true -->
    </component>
</settings>
<!-- 部署阶段 -->
<settings pass="specialize">
    <!-- Microsoft-Windows-Deployment 组件 -->
    <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" ...>
        <!-- 部署中执行的命令或程序 -->
        <RunSynchronous>
            <!-- 添加一个执行项目 (后续添加时再写一组)  -->
            <RunSynchronousCommand wcm:action="add">
                <!-- 项目的执行顺序, 后续递增 -->
                <Order>1</Order>
                <!-- 执行的命令或程序 (支持系统环境变量/支持参数)  -->
                <Path>%SystemDrive%\Sysprep\InDeploy.exe</Path>
                <!-- 关于本项目的描述 -->
                <Description>InDeploy</Description>
            </RunSynchronousCommand>
        </RunSynchronous>
    </component>
    <!-- Microsoft-Windows-Shell-Setup 组件 -->
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" ...>
        <!-- 使封装用户的配置成为新建用户的配置默认值 -->
        <CopyProfile>true</CopyProfile>
        <!-- 注册用户 -->
        <RegisteredOwner>Skyfree</RegisteredOwner>
        <!-- 注册组织 -->
        <RegisteredOrganization>itsk.com</RegisteredOrganization>
        <!-- 默认时区 -->
        <TimeZone>China Standard Time</TimeZone>
        <!-- 计算机名 -->
        <ComputerName>SK-20191031RFBJ</ComputerName>
    </component>
    <!-- Microsoft-Windows-UnattendedJoin 组件 -->
    <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" ...>
        <Identification>
            <!-- 加入工作组 -->
            <JoinWorkgroup>WorkGroup</JoinWorkgroup>
        </Identification>
    </component>
</settings>
<!-- OOBE阶段 -->
<settings pass="oobeSystem">
    <!-- Microsoft-Windows-Shell-Setup 组件 -->
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" ...>
        <!-- 首次登录时执行的命令或程序 -->
        <FirstLogonCommands>
            <!-- 添加一个执行项目 (后续添加时再写一组)  -->
            <SynchronousCommand wcm:action="add">
                <!-- 项目的执行顺序, 后续递增 -->
                <Order>1</Order>
                <!-- 执行的命令或程序 (支持系统环境变量/支持参数)  -->
                <CommandLine>%SystemDrive%\Sysprep\FirstLogon.exe</CommandLine>
                <!-- 关于本项目的描述 -->
                <Description>FirstLogon</Description>
            </SynchronousCommand>
        </FirstLogonCommands>
        <!-- 进入桌面时执行的命令或程序 -->
        <LogonCommands>
            <!-- 添加一个执行项目 (后续添加时再写一组)  -->
            <AsynchronousCommand wcm:action="add">
                <!-- 项目的执行顺序, 后续递增 -->
                <Order>1</Order>
                <!-- 执行的命令或程序 (支持系统环境变量/支持参数)  -->
                <CommandLine>%SystemDrive%\Sysprep\Desktop.exe</CommandLine>
                <!-- 关于本项目的描述 -->
                <Description>Desktop</Description>
            </AsynchronousCommand>
        </LogonCommands>
        <!-- OOBE设置 -->
        <OOBE>
            <!-- 网络位置 (家庭Home/工作Work/公共Other)  -->
            <NetworkLocation>Other</NetworkLocation>
            <!-- 获取更新 (全部1/仅重要2/关闭3)  -->
            <ProtectYourPC>1</ProtectYourPC>
            <!-- 隐藏最终用户许可协议页面 -->
            <HideEULAPage>true</HideEULAPage>
            <!-- 隐藏Wifi设置页面 -->
            <HideWirelessSetupInOOBE>false</HideWirelessSetupInOOBE>
            <!-- 跳过机器OOBE -->
            <SkipMachineOOBE>false</SkipMachineOOBE>
            <!-- 跳过用户OOBE -->
            <SkipUserOOBE>false</SkipUserOOBE>
        </OOBE>
        <!-- 注册用户 -->
        <RegisteredOwner>Skyfree</RegisteredOwner>
        <!-- 注册组织 -->
        <RegisteredOrganization>itsk.com</RegisteredOrganization>
        <!-- 默认时区 -->
        <TimeZone>China Standard Time</TimeZone>
        <!-- 文件夹定位 -->
        <FolderLocations>
            <!-- 用户目录位置 -->
            <ProfilesDirectory>D:\Users</ProfilesDirectory>
            <!-- ProgramData 目录位置, 注意并不是 Program Files 目录 -->
            <ProgramData>D:\ProgramData</ProgramData>
        </FolderLocations>
        <!-- 用户账户配置 -->
        <UserAccounts>
            <!-- 本地账户 -->
            <LocalAccounts>
                <!-- 添加一个账户 -->
                <LocalAccount wcm:action="add">
                    <!-- 账户名 -->
                    <Name>PCMgr</Name>
                    <!-- 账户用户组 -->
                    <Group>Administrators</Group>
                    <!-- 密码 -->
                    <Password>
                        <!-- 密码值 -->
                        <Value>abc123</Value>
                        <!-- 密码在当前文件中为明文 -->
                        <PlainText>true</PlainText>
                    </Password>
                </LocalAccount>
                <!-- 再添加一个账户 -->
                <LocalAccount wcm:action="add">
                    <Name>User1</Name>
                    <Group>Users</Group>
                </LocalAccount>
                <!-- 再添加一个账户 -->
                <LocalAccount wcm:action="add">
                    <Name>User2</Name>
                    <Group>Users</Group>
                </LocalAccount>
            </LocalAccounts>
        </UserAccounts>
        <!-- 自动登录 -->
        <AutoLogon>
            <!-- 是否启用, 启用true/不启用false -->
            <Enabled>true</Enabled>
            <!-- 自动登录的账户 -->
            <Username>PCMgr</Username>
            <!-- 密码 -->
            <Password>
                <!-- 密码值 -->
                <Value>abc123</Value>
                <!-- 密码在当前文件中为明文 -->
                <PlainText>true</PlainText>
            </Password>
            <!-- 自动登录次数 -->
            <LogonCount>1</LogonCount>
        </AutoLogon>
    </component>  
</settings>



3.3 顺道说一下 WSIM

WSIM(Windows System Image Manager,Windows 系统映像管理器)是微软官方软件,以图形化、模块化的方式快捷的配置 Windows 系统映像的各项功能,最终输出 xml 配置文件。系统部署无人值守配置文件中的项目,只是整个配置文件的子集。

2019-10-31_16-38-40.png


WSIM 的功能繁多,但配备有详细的帮助文档,这里就不再一一赘述了。用于系统封装部署的项目基本上已经在上一节全部解释过了,观众老爷们如果有兴趣的可以看看它们在 WSIM 里所对应的位置。



相关问题

无人值守配置文件放置在哪里?
系统盘:\Windows\Panther\Untitled.xml

WSIM 去哪里下载?
WSIM 是微软 Windows ADK 工具包的一部分
https://docs.microsoft.com/zh-cn ... started/adk-install

需要学习WSIM的所有功能吗?
如同第一章时讨论是否有必要学会 VMware 的所有功能一样,系统封装所用到的功能配置项只是整个 WSIM 配置的一部分,只要掌握了这一部分对我们日常的封装部署操作已经没有太多阻碍了。个人认为实用至上,在有限的时间内将有限的精力用于重点上才能快速提高。

封装时导入无人值守配置文件的方法
如果使用 ES5 这类封装辅助工具,无人值守文件会自动生成并导入。
而如果是手动封装,需要在运行 sysprep.exe 时添加参数 /unattend ,形如:
  1. sysprep.exe /unattend:D:\Unattend.xml
复制代码





点评

请问S大这个必须配置吗,对于我来说这是整章最难学习操作的部分,谢谢!(本人业余小白一枚)  详情 回复 发表于 2020-3-19 15:50
 楼主| Skyfree 发表于 2019-11-2 17:45:25 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

本文系IT天空原创文章,未经许可请勿转载,谢谢合作!

4 - 账户配置的默认与继承



提前声明,因目前未找到对用户账户配置设为默认与继承默认的更为详细的说明,本节内容是微软文档与工作实践相结合得出的结论,笔者不保证本节内容完全正确,诚请各位坛友参与讨论与订正。

在上一节中,我们提到了无人值守配置文件中,Microsoft-Windows-Shell-Setup 组件的 <CopyProfile>true</CopyProfile> 项目。当其值设置为 true 时,系统部署程序会将封装所用账户的配置设为默认账户(default账户)的配置。而新建账户是继承默认账户的配置的,所以新建账户的配置会与封装所用账户相同。

这里要提到另一个问题,Administrator 的特殊性。封装前所使用的 Administrator 与在新计算机中部署完成后得到的 Administrator 虽然同名但却不是同一个账户(猜测是为了安全考虑)。新计算机中的 Administrator 是继承了默认用户的配置后新建出来的,并非是封装前的那个 Administrator。所以从流程上讲,新计算机上的 Administrator 账户与其他新建账户均为新建账户。

使用 Administrator 封装,账户配置的流向图如下:
2019-10-31_20-40-52.png


虽功能如此,但实际上新账户的配置与原封装账户的配置还是存在区别的,并非所有配置项目都被继承了,原因有3:
(1)封装后部分配置项被还原为默认值(上图配置1到2),所以被设置为默认的配置并非封装账户的原本配置;
(2)功能设计时就存在对部分系统设置项的遗漏(Win7没几个,Win10漏一堆);
(3)部分配置没有被继承到新用户配置(少数)。

对于这些问题,可以采用封装前记录,部署后还原的方法。封装辅助工具(如ES5)可自动完成这些操作。

除了使用 Administrator 封装,还有使用自建管理员账户封装的方法,账户配置流向图如下:
2019-10-31_20-41-24.png


这个流程与 Administrator 封装有些区别,由于部署后直接使用了自建账户登录,是不需要新建账户这个流程的,那么自然就没有了继承默认用户配置的过程。这种方法巧妙的避开了上述问题(2)和(3)。

至此,我们了解了用户账户配置的总流向,在今后遇到相关问题时可以有章可循。



相关问题

直接复制用户配置文件到默认用户的方法是否可行
目前有将封装账户目录下的 NTUSER.DAT 直接复制覆盖 default 用户目录的方法,笔者仅提出2点疑问:
(1)账户配置不仅包括 NTUSER.DAT,还包括了用户目录下的其他内容,如 AppData 下的各类程序(文件),仅复制覆盖 NTUSER.DAT 估计不是完整的用户配置。
(2)封装账户在执行系统封装时,配置项除了还原为系统默认值的部分,还有被剔除的部分。被剔除的部分大多是包含了当前计算机信息的,如部分系统功能的绝对路径。这些本应被剔除的配置项被直接作为新建账户的默认值,是否欠妥?

形成 Administrator.xxx 目录是为什么?
这种问题主要发生在“Admin 封装,Admin 登录”的模式下。系统将 Administrator 的账户配置用于默认账户时,除了将 Administrator 的配置项数据写入默认账户外,还会将 Administrator 账户目录下的程序文件(如 AppData 目录)复制到默认账户。操作完成后,会自动删除 Administrator 账户目录。而如果某些写入到 Administrator 账户目录下的程序(特别是带服务项、带驱动项、带钩子的程序)处于占用状态,将会导致“设默认”操作完成后无法顺利删除 Administrator 账户目录!通过本节学习我们知道了新计算机的 Administrator 是被新建出来的,那么当新建 Administrator 账户时发现 Administrator 目录已经存在且被占用,就只能新建一个 Administrator.xxx 目录了。

输入法、开始菜单、任务栏图标、默认应用关联被还原怎么办?
这些项目均属于被还原或未被记录的范畴。善用搜索可发现本站诸多类似教程,这里不再赘述。目前ES5可以解决这些问题,但对某些以强改注册表方式实现的输入法状态暂时没有100%兼容。

Windows 10 新建用户黑屏、IE无法打开为什么?
典型的“印式BUG”(不要担心,以后还会更多),发生于“Admin 封装,Admin 登录”的模式下,表现为:在新计算机的 Administrator 账户下新建账户,进入新建账户时会黑屏10~20分钟不等,进入新账户后IE无法正常打开。这个问题暂未查明具体原因,怀疑与用户账户权限的默认与继承有关。但不要将此问题归结为“使用 Admin 封装造成的”,即便使用 Administrator 封装,只要部署后不使用 Administrator 直接登录,而是手动或自动建立新管理员账户,则不会有问题。



本节特别鸣谢

@DN维护 @日光月华



点评

请问 S大觉得哪个账户封装会好一点呢 win7和win10 使用 Administrator 封装和自建管理员账户封装  详情 回复 发表于 2019-11-14 22:19
 楼主| Skyfree 发表于 2019-11-2 17:45:26 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

本文系IT天空原创文章,未经许可请勿转载,谢谢合作!

5 - 关于引导



5.1 系统引导

系统引导是系统启动的重要组成部分,无论与系统封装还是部署均息息相关。不能良好的处理引导文件(分区),往往会导致系统无法启动的问题。有时并不是系统没有封装(部署)好,而是引导没有处理好。目前 Windows 的主流引导方式分为 BIOS + MBRUEFI + GPT (GUID) 两种,关于这两种引导方式的定义、区别、优缺点等可以随便X度到100条,本节就不再赘述。本节着重梳理两种启动方式的要点。

BIOS + MBR 引导方式启动流程:计算机启动进入BIOS,根据BIOS中所设置的启动项进入启动盘,查看启动盘的MBR随后找到活动分区,根据活动分区内的引导文件确认系统的位置,找到系统分区并启动系统。如下图:
2019-11-01_19-42-03.png

UEFI + GPT 引导方式启动流程:计算机启动进入UEFI,启动 Windows Boot Manager(Windows 启动管理器,WBM)查找ESP分区,进入ESP分区并根据其中引导文件确认系统的位置,找到系统分区并启动系统。如下图:
2019-11-01_19-43-48.png


两种启动方式虽截然不同,但重心均为:
(1)找到引导文件。MBR模式引导文件在活动分区内,GPT模式引导文件在ESP分区内,所以无论是BIOS模式通过MBR查找活动分区,或是UEFI模式通过 Windows Boot Manager 查找ESP分区,其目的都是找到引导文件。
(2)启动操作系统。找到引导文件后,根据引导文件中所标识的系统位置(如 C:\Windows)找到系统目录,并尝试引导目标位置操作系统启动。

至此,我们以简单明了的方式明确了系统引导的流程。



5.2 引导修复

BIOS 引导成功的必要条件
  -  MBR正确
  -  有活动分区
  -  活动分区内有引导文件
  -  引导文件正确的指向了系统目录
  -  系统目录中操作系统正常

UEFI 引导成功的必要条件
  -  Windows Boot Manager 状态正常(撒币了的话重置UEFI试试 :)
  -  有ESP分区
  -  ESP分区内有引导文件
  -  引导文件正确的指向了系统目录
  -  系统目录中操作系统正常

根据系统引导流程得出上述结论,在今后遇到引导问题时可以逐一排查。

同时推荐微软官方的引导处理工具 bcdboot

语法:
bcdboot <系统位置> [参数1 <值>][参数2 <值>]...

参数:
/s 引导分区:BIOS模式的活动分区,UEFI模式的ESP;
/f 引导模式:BIOS或UEFI;
/l 引导菜单语言:如 zh-cn(简体中文)、en-us(英文)等。

例1:BIOS模式,C盘为活动分区,系统位置 C:\Windows
  1. bcdboot C:\Windows /s C: /f BIOS
复制代码

例2:BIOS模式,H盘为引导分区(活动),系统位置 C:\Windows
  1. bcdboot C:\Windows /s H: /f BIOS
复制代码

例3:UEFI模式,H盘为ESP分区,系统位置 C:\Windows
  1. bcdboot C:\Windows /s H: /f UEFI
复制代码

例4:UEFI模式,H盘为ESP分区,系统位置 D:\Windows
  1. bcdboot D:\Windows /s H: /f UEFI
复制代码




相关问题

引导分区与系统分区可以不是同一个??
UEFI模式自不用多说,ESP分区已经把引导文件单独分了出去。而BIOS 模式下,很多人有着“引导文件必须在系统分区”、“系统分区必须是活动分区”的认知。准确的说,MBR模式下要求的是“引导分区必须是活动分区”,根据启动流程需要到活动分区下寻找引导文件。而引导文件对系统的指向不限于当前盘符,可以是其他盘符,例如引导文件在H盘而系统在C盘。这不是什么奇怪的事情,自 Windows 7 起原版系统光盘安装时的默认分区方法已经把引导文件单独放到前置分区了。

封装时将系统与引导分离的好处是什么?
本札记已经在不同章节多次重复:引导是引导、系统是系统,虽然息息相关,但相对独立。将引导与系统分离后再封装,之后备份的系统映像中不包含引导,是纯粹的系统。这样的系统今后无论部署到BIOS模式或UEFI模式的环境中均适用,而引导只需在映像恢复完毕后修复(新建)即可。而修复引导并不是麻烦,目前主流映像恢复工具均已包含了自动修复引导的功能。另:微软原版映像中也并未包含引导,引导亦是在安装系统后根据计算机环境新建的。



本节特别鸣谢
@SHC




 楼主| Skyfree 发表于 2019-11-2 17:45:27 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

本文系IT天空原创文章,未经许可请勿转载,谢谢合作!

6 - 关于驱动

像“驱动的作用是系统与硬件的桥梁,使硬件发挥更好的性能”这种废话就说这么一次吧,想必观众老爷们也不想看。



6.1 驱动的类型

(1)系统驱动库,指内置于系统的庞大驱动体系。Windows 系统内置了相当数量的驱动,这些驱动可以在系统部署时保障各类基础设备的正常运行。除了基础设备,Windows 系统驱动库还包含了相当多常用设备的驱动,例如各类网卡、常见声卡、入门级显卡以及各类打印机、扫描仪等。系统驱动库的驱动不一定能发挥硬件的最好性能,但兼容性稳如老狗。

(2)通用型驱动,兼容一类硬件的通用驱动,是系统驱动库的一部分。例如 Win7 时加入的通用 AHCI 驱动、Win8 时加入的通用 USB3 驱动、Win10 时加入的通用 nvme 驱动。后续放出补丁为 Win7/8 也补充了通用 nvme 驱动,但一直没为 Win7 补充通用 USB3 驱动(可能是为了让 Win7 早退休)。通用型驱动不仅提高了设备兼容,还变相建立了行业标准,硬件厂商在开发硬件时会优先考虑兼容通用型驱动,毕竟“他家的东西插上就能用,你家的东西还得特么装驱动”是个多么尴尬的事情。

(3)公版驱动,由源头硬件厂商开发的支持特定硬件型号的驱动程序。例如 nVIDIA 为 GTX1050/1060/1650/1660 显示芯片开发的驱动程序、Intel 为 H310/B360/B365/H370/Z390 主板芯片组开发的驱动程序等,可以使这些指定型号的设备发挥最佳性能。有些硬件在与通用型驱动兼容的同时又有其对应的公版驱动(如某些磁盘控制器设备),通用驱动方便了系统部署,后续为其安装公版驱动提升了性能。

(4)专用驱动,由硬件厂商开发的专用于特定硬件产品的驱动程序。除了直接制造芯片的源头厂商,还有非常多的硬件制造商(如华硕、技嘉)。制造商在获取了芯片后开始生产硬件产品,在生产过程中会加入一些自己的独有设计,使硬件性能得到进一步提升,这类产品虽然兼容公版驱动,但却需要制造商开发的专用驱动才能发挥出其极限性能。此外,一些OEM厂商(如戴X、X想)会有定(yan)制(ge)版硬件,这类硬件无法兼容公版驱动,必须使用OEM厂商提供的专用驱动,否则无法正常使用。



6.2 驱动的组成

从文件的角度讲,驱动一般由 .inf 文件(设备信息文件,Device Information File)与驱动文件两部分组成。.inf 文件表达了 硬件-驱动 对应关系,规定了驱动文件的源位置与目标位置,并指定了在安装驱动时要创建或变更的注册表值等。简而言之 .inf 文件决定驱动适用范围与安装方法,驱动文件决定硬件性能。而实际上,一个(组)驱动可能包含不只一个 .inf 文件,一个 .inf 文件也不只对应一个驱动文件,所以看到一“包”文件才是常态(大哭)。

有些驱动还配备了控制程序,常见于显卡驱动。通过控制程序的选项调整硬件设备的各项设置,从而更贴合使用者的应用需求。但控制程序严格的讲并不是驱动,驱动即便没有控制程序也可以发挥其默认性能,控制程序的首要作用是调控。

而驱动一旦被安装到系统,则其分布就变得更加零散。文件方面:驱动文件会根据 .inf 的配置放置到指定位置,.inf 文件会被复制到 Windows\inf 目录并被改名成 oem*.inf 的形势,同时 NT6 代还会自动备份安装过的驱动到驱动库。注册表方面:根据 .inf 的配置写注册表值,设备信息会被添加至 HKLM\SYSTEM\ControlSet001\Control\Class、HKLM\SYSTEM\ControlSet001\Enum 等位置,如果驱动有服务项还会添加 HKLM\SYSTEM\ControlSet001\Services 相关值,如果驱动与网络相关还会变更网络相关值等。总之驱动一旦被安装,分布是相当复杂的。



6.3 驱动的集成

这里有必要说明驱动集成(整合)与驱动安装的区别。例如系统驱动库内的驱动,这些
驱动虽集成在系统内但并没有安装到系统内,而当遇到匹配的硬件时,集成的驱动会自动进行安装。NT6 代后,微软提供了通过 DISM 将驱动整合到系统驱动库的功能,十分方便。

驱动集成一般是对离线系统,如:PE 下对C盘系统、当前系统下对挂载的系统映像,DISM 相关语法如下:
DISM.exe /image:[离线系统路径] /Add-Driver /driver:[驱动 .inf 文件]
DISM.exe /image:[离线系统路径] /Add-Driver /driver:[包含驱动 .inf 文件的目录] [/Recurse]

当对目录操作时,使用 /Recurse 参数将自动遍历所有子目录。以 PE 下对C盘举例:
  1. DISM.exe /image:C: /Add-Driver /driver:D:\Drivers\xxx.inf
复制代码
  1. DISM.exe /image:C: /Add-Driver /driver:D:\Drivers
复制代码
  1. DISM.exe /image:C: /Add-Driver /driver:D:\Drivers /Recurse
复制代码

注意:
(1)集成≠安装;
(2)驱动本身也是会存在 BUG;
(3)不是所有的驱动都标准到支持 DISM 整合;
(4)不是所有成功整合的驱动都能正常工作;
(5)不是所有驱动都能愉快的一起工作。



6.4 驱动的关系

一般人认为驱动与硬件的对应关系是这样的:
2019-11-02_10-46-02.png

但其实是这样的:
2019-11-02_10-46-43.png

实践中是这样的:
2019-11-02_10-47-11.png

而驱动程序也是充满BUG的:
2019-11-02_10-51-30.png

所以万能驱动是这样的:
2019-11-02_10-47-33.png

我是这样的:
bm2.jpg

真的麻烦诸位以后如果发现万能驱动有什么驱动不上,一定给个日志,至少给个硬件ID吧。



相关问题

DISM、DISM++?
DISM 是微软 ADK 工具包中的一部分,DISM++ 是第三方开发的软件。
名字相似,但并不是同一个软件。部分坛友简称 DISM++ 为 DISM 是非常容易引起混淆的。

Windows 7 及之后,还有必要集成磁盘控制器驱动吗?
个人认为没有必要,Win7/8/10 内置通用 AHCI 驱动 与 通用 nvme 驱动(7/8打补丁后获得),硬件厂商也都在尽可能向微软的通用驱动靠拢,所以一般情况下只要符合微软通用驱动标准的设备,无需额外集成磁盘控制器驱动已经可以正常装系统启动了。虽然通用驱动的性能不是最好的,但兼容性却是最广的,况且可以在安装系统时再打上硬件厂商提供的驱动以提高性能,所以提前集成磁盘控制器驱动的必要性越来越低。除了通用驱动,系统内还内置了一些常用磁盘控制器驱动,如 Intel 的板载 RAID 驱动等,足够应付日常装机了。而如果真的遇到系统内默认不包含的磁盘控制器驱动,可以直接在 PE 下使用 DISM 向系统集成驱动,万能驱动也支持在 PE 下运行直接向系统导入驱动。



点评

慢慢学习一下精髓  详情 回复 发表于 2019-12-6 11:31

评分

参与人数 4活跃 +70 技术 +6 互助 +9 收起 理由
pyj521 + 20 + 2 + 3 精品文章,很给力!
dbailp + 10 热心贡献,万分感谢!
国士无双-泓泽 + 20 + 2 + 3 反手一个6
qq271859852 + 20 + 2 + 3 精品文章,很给力!

查看全部评分

 楼主| Skyfree 发表于 2019-11-2 17:45:28 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

感谢各位观众老爷观看!麻烦给点个赞、设个首页、赏个脸给装个浏览器!非常感谢!

欢迎加入本站VIP,感谢各位VIP大人续费,优质资源第一时间为您呈上!>>积分充值

IT天空定制版高速U盘欢迎各位英俊潇洒气宇非凡的老板给捧个场!!64G  128G 256G  256G Pro

点评

来个双头多好。。。。MBP默默路过  详情 回复 发表于 2020-5-19 19:55
是不是买定制u盘就送vip啊  详情 回复 发表于 2019-12-19 22:44
Aboluo 发表于 2019-11-2 18:20:24 | 显示全部楼层

活跃 15628| 技术 0| 互助 0| 钻石 300

支持S大,又更新了
magicgenius 发表于 2019-11-2 18:21:17 | 显示全部楼层

活跃 56700| 技术 85| 互助 118| 钻石 620

这么长?辛苦了,狂赞!
慢慢仔细看……

点评

差不多把需要的知识点整理了一遍  详情 回复 发表于 2019-11-2 18:22
 楼主| Skyfree 发表于 2019-11-2 18:22:30 | 显示全部楼层

活跃 273367| 技术 1420| 互助 1819| 钻石 31024

magicgenius 发表于 2019-11-2 18:21
这么长?辛苦了,狂赞!
慢慢仔细看……

差不多把需要的知识点整理了一遍

点评

S大 请教个问题我用es5封装的系统,是odbe 手动创建用户,用u盘安装没问题, 但是用微软的sccm1902部署提取了应答文件,设置好以后,安装完部署都没问题驱动软件都安装了,但是没有odbe手动创建用户的选择,我应该怎  详情 回复 发表于 2020-4-16 17:48
dilbir 发表于 2019-11-2 18:44:33 | 显示全部楼层

活跃 10617| 技术 0| 互助 0| 钻石 100

支持S大,又更新了
OC3 发表于 2019-11-2 20:11:56 | 显示全部楼层

活跃 22366| 技术 63| 互助 135| 钻石 370

来晚了,支持!全是干货!感谢S大!
OC3 发表于 2019-11-2 20:48:55 | 显示全部楼层

活跃 22366| 技术 63| 互助 135| 钻石 370

认真的看完了!
橙子科技 发表于 2019-11-2 23:32:24 | 显示全部楼层

活跃 4441| 技术 0| 互助 0| 钻石 0

非常认真的看完了, 还特意续费了一个月的VIP,手头有点紧没办法  哈哈
讲的很详细,但是对于刚入门的新手有点太飘,但不可置否这些都是非常基础的东西。
同样期待下次的更新,S大加油!
shusanxi 发表于 2019-11-3 01:17:52 来自手机 | 显示全部楼层

活跃 17060| 技术 62| 互助 79| 钻石 350

这要好好学习学习,很多东西我们只知道操作,不懂得意思,这教程非常专业非常详细,感谢s大无私奉献

点评

OC3
其实我觉着除了教程,每节的那个相关问题其实非常好  详情 回复 发表于 2019-11-3 10:12
OC3 发表于 2019-11-3 10:12:04 | 显示全部楼层

活跃 22366| 技术 63| 互助 135| 钻石 370

shusanxi 发表于 2019-11-3 01:17
这要好好学习学习,很多东西我们只知道操作,不懂得意思,这教程非常专业非常详细,感谢s大无私奉献

其实我觉着除了教程,每节的那个相关问题其实非常好
yonggang 发表于 2019-11-3 10:56:34 | 显示全部楼层

活跃 49926| 技术 0| 互助 4| 钻石 550

理论与实践相结合,才能做到真正的融会贯通,感谢S大,辛苦了!
pnlaochen 发表于 2019-11-3 16:45:18 | 显示全部楼层

活跃 31661| 技术 0| 互助 0| 钻石 260

认真学习S大的新作……
白云飘飘456 发表于 2019-11-3 18:35:00 | 显示全部楼层

活跃 102848| 技术 163| 互助 482| 钻石 1770

慢工出细活!慢慢更新
635199225 发表于 2019-11-3 19:02:11 | 显示全部楼层

活跃 13935| 技术 6| 互助 8| 钻石 100

皮皮的S大   辛苦了  
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Skyfree

273367

活跃

1420

技术

1819

互助
签到任务
最火的业界新闻
  • 开发者现身说法 苹果M1芯片为何比高端英特
  • 联想发布拯救者Y9000X/R9000X 2021游戏本:
  • 拆机发现PS5混用不同散热器 实测散热效果有
  • Mini-LED M1 MacBook Pro和Mini-LED iPad P
  • 外媒绘制一加9 Pro渲染图:细节程度堪比官
  • RX 6700 XT核心频率极限2.95GHz:超过RX 68
  • M1 MacBook Air电池表现实测:续航长了、充
  • A78芯加持 联发科新SoC曝光:跑分超骁龙865
  • 制造1nm芯片的EUV光刻机:ASML已完成设计
  • AMD制定RX 6800系列显卡命名规范:全名多达
炫酷的硬件Show
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
  • 第一次DIY硬管水冷~~
  • 樱桃MX6.0 青轴 机械键盘 开箱
有趣的美图分享
  • 现代别墅
  • 我怀疑这也是人类的未来
  • 没错这是东北的冬天
  • 大金链子,这事儿太完美了
  • 真是这样啊
  • 赤裸裸的报复
  • 啊这..一副假发都要做出来了
  • 穿秋裤了吗?
  • 成功接住玩具时的表情和没接住时的表情
  • 是亲妈了
关注官方微信
快速回复 返回顶部 返回列表