顯示具有 autounattend 標籤的文章。 顯示所有文章
顯示具有 autounattend 標籤的文章。 顯示所有文章

2020年4月28日

PMax 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART Max 懶人包


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

使用方法:
改動Windows 10原版ISO內容:
  • 下載檔案
  • 把autounattend.xml和partition.cmd複製到Windows 10安裝媒體/(ISO檔案裡)的 根目錄(跟setup.exe同一層)
  • 把其餘所有檔案複製到Windows 10安裝媒體/(ISO檔案裡)的 sources\$OEM$\$$\Setup\Scripts
  • 使用該安裝媒體安裝Windows 10

不改動Windows 10原版ISO內容, 外掛使用floppy disk的映像檔:

2020/05/29: 增加了使用winget安裝應用程式的選擇


有安裝測試過的版本:
Windows 11 專業版 (繁體中文) 64位元版

  • Windows 11 Insider Preview Build 22572.1
  • Windows 11 版本 21H2 Build 22000.556

Windows 10 專業版 (繁體中文) 64位元版

  • 版本 2009/21H2 Build 19044.1586
  • 版本 2009/21H1
  • 版本 2009/20H2
  • 版本 2004/20H1
  • 版本 1909/19H2 
  • 版本 1903/19H1 
  • 版本 1809/RS5

安裝流程說明:
autounattend.xml
[windowsPE]階段
  • 把安裝媒體的磁碟機代號設為Z
  • 執行z:\partition.cmd: 判斷是BIOS還是UEFI模式, 呼叫DiskPart分割磁碟
  • 安裝Windows 10專業版

[specialize]階段
  • 產生電腦名稱: ABCIT-XXXXXXXXX (X表示為隨機產生的字元)
  • 停用[保留的儲存空間]
  • 停用[首次登入動畫(first sign-in animation)]

[oobeSystem]階段
  • 建立本地帳號, 使用者: admin, 密碼: password
  • 用admin帳號自動登入
  • 把微軟注音輸入法的[預設輸入模式]改為英數字元(alphanumeric)
  • 執行MyPost.cmd
  • MyPost.cmd執行完成後, 設定系統於180秒後重新啟動

MyPost.cmd
  • 停用[SMB 1.0/CIFS 檔案共用支援]功能
  • 把admin帳號設為密碼永久有效
  • 設定工作管理員顯示更多詳細資料 (執行SetTaskManager.ps1)
  • 選擇電源計畫[平衡]並設定:
    • 關閉顯示器: 30分鐘
    • 讓電腦睡眠: 永不
    • 硬碟, 關閉硬碟前的時間: 0分鐘(永不)
  • 修改使用者跟預設的註冊機碼
    • Turn off [Start OneDrive automatically when sign in to Windows]
    • Show Search icon (instead of box)
    • Hide Cortana button
    • Disable People Bar on taskbar
    • Show This PC icon
    • Show Network icon
    • Show Control Panel icon
    • Show File name extensions
    • UAC Do not dim my deskyop
    • Disable Acrylic Background On Logon
    • Set More details in File Transfer Dialog
    • Hide Meet Now icon, OS build 18362 and later
    • Windows 11 only
      • Set Taskbar alignment Left
      • Uninstall Microsoft Teams for all users
    • Disable Open on hover for News and interests, OS build 18363 later
    • Set AutoLogonCount to 0
    • Set Default Input Mode to Alphanumeric
    • Set More details in Task Manager
    • Disable first sign-in animation
  • 選用步驟: (每個步驟會詢問是否執行, 等待60秒未回答則跳過不執行)
    • DnInWinget.ps1: 詢問是否要下載並安裝winget command line tool, 以及要不要用winget來安裝後面的應用程式
    • DnInChromiumEdge.ps1: 下載並安裝以Chromium為基礎的新Microsoft Edge
    • DnInPowerShell.ps1: 從GitHub下載並安裝PowerShell
    • DnInWinTerminal.ps1: 從GitHub下載並安裝Windows Terminal
    • DnInVcRedist.ps1: 下載並安裝Microsoft Visual C++ 2015-2019 Redistributable x64/x86
    • AddIMEs.ps1: 安裝舊版微軟[新倉頡][新速成]中文輸入法, 參考 Windows 10 安裝新倉頡新速成中文輸入法 (2004/20H1/20H2適用)
    • DnInVMwareTools.ps1: 下載並安裝VMware Tools (VMware Workstation VM)
    • SetTargetVersion.ps1: 設定Windows 10版本, 參考 不要讓Windows 10被Windows Update升級大版本
    • RenCompName.ps1: 更改電腦名稱 
    注意: DnInWinget.ps1 DnInWinTerminal.ps1 會透過 https://store.rg-adguard.net 查詢package的下載連結(package檔案是從微軟網站下載), 如有顧慮就請不要使用
  • 刪除%Systemroot%\Setup\Scripts裡面的所有檔案

(MyPost.cmd執行完成, 系統於180秒後會重新啟動)


以下是我用做好的自動安裝回應檔案在VM上安裝Windows 10的過程畫面
(參考用, 不見得會跟使用下載檔案安裝過程一模一樣, 因為可能還會上傳修改過的回應檔跟script)


2020年4月14日

P9 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART IX 彈性搭配批次檔使用


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

如果想要開啟, 修改或關閉Windows 10大部分的功能或屬性, 通常可以透過DISM指令, 修改註冊機碼或是使用PowerShell等不同方法來達成.
要使用自動安裝回應檔案來完成上述目的, 可能寫法比較複雜或是無法做到, 這時就可以搭配批次檔處理比較複雜的設定任務.

首先要注意的事情是: 批次檔是在oobeSystem階段執行的, 也就是那時Windows 10基本上已經安裝完成了.
所以如果有些東西必須要在oobeSystem階段之前就完成的, 例如: P4 不要預留[保留的儲存空間](要在specialize階段就設定好), 那就還是要透過自動安裝回應檔案來完成.

流程:
  • autounattend.xml: 安裝Windows 10專業版
  • autounattend.xml: 產生電腦名稱: ABCIT-XXXXXXXXX (X表示為隨機產生的字元)
  • autounattend.xml: 停用[保留的儲存空間]
  • autounattend.xml: 建立使用者: admin, 密碼: password
  • autounattend.xml: 用admin帳號自動登入, 把中文輸入法的預設輸入模式改設為英數模式
  • autounattend.xml: 執行MyPost.cmd
  • MyPost.cmd: 停用[SMB 1.0/CIFS 檔案共用支援]功能
  • MyPost.cmd: 詢問是否執行RenCompName.ps1, 等待100秒未回答則跳過不執行
  • RenCompName.ps1: 等待輸入要變更的新名稱, 輸入完成並確定後更改為新的電腦名稱
  • MyPost.cmd: 刪除%Systemroot%\Setup\Scripts裡面的所有檔案 (MyPost.cmd, RenCompName.ps1)
  • autounattend.xml: 系統於180秒後重啟

自動安裝回應檔案(autounattend.xml)內容主要來自:
  • P3
  • P4
  • P7
  • P8: 指定電腦名稱的部分

透過批次檔(MyPost.cmd)處理:
  • P5: 改由呼叫PowerShell處理
  • 輸入/更改電腦名稱: 呼叫PowerShell(RenCompName.ps1)處理

原理:
Windows 10安裝媒體/(ISO檔案裡)的 sources\$OEM$\$$\Setup\Script 目錄下的檔案,
在Windows安裝過程中會被複製到 %Systemroot%\Setup\Scripts 目錄 (通常是C:\Windows\Setup\Scripts)

利用自動安裝回應檔案autounattend.xml裡面的<AutoLogon><FirstLogonCommands><SynchronousCommand wcm:action="add">等設定去執行MyPost.cmd, 再進而執行RenCompName.ps1


使用方法:
  • 檔案1. autounattend.xml
  • 檔案2. MyPost.cmd
  • 檔案3. RenCompName.ps1
 
  1. 把檔案1.autounattend.xml複製到Windows 10安裝媒體/(ISO檔案裡)的 根目錄
  2. 把檔案2.MyPost.cmd和檔案3.RenCompName.ps1複製到Windows 10安裝媒體/(ISO檔案裡)的 sources\$OEM$\$$\Setup\Scripts
    • 因為檔案3.內有中文字元, 檔案編碼需要是UTF-16 LE/UCS-2 LE BOM顯示才不會亂碼
  3. 使用該安裝媒體安裝Windows 10

檔案1. autounattend.xml
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<!-- By Proliantaholic https://proliantaholic.blogspot.com -->
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" 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">
            <SetupUILanguage>
                <UILanguage>zh-TW</UILanguage>
            </SetupUILanguage>
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
        </component>
        <component name="Microsoft-Windows-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">
            <UserData>
                <ProductKey>
                    <Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
                    <WillShowUI>OnError</WillShowUI>
                </ProductKey>
                <AcceptEula>true</AcceptEula>
            </UserData>
            <DiskConfiguration>
                <Disk wcm:action="add">
                    <CreatePartitions>
                        <CreatePartition wcm:action="add">
                            <Order>1</Order>
                            <Size>500</Size>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Extend>true</Extend>
                            <Order>2</Order>
                            <Type>Primary</Type>
                        </CreatePartition>
                    </CreatePartitions>
                    <ModifyPartitions>
                        <ModifyPartition wcm:action="add">
                            <Active>true</Active>
                            <Format>NTFS</Format>
                            <Label>System Reserved</Label>
                            <Order>1</Order>
                            <PartitionID>1</PartitionID>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Letter>C</Letter>
                            <Order>2</Order>
                            <PartitionID>2</PartitionID>
                        </ModifyPartition>
                    </ModifyPartitions>
                    <DiskID>0</DiskID>
                    <WillWipeDisk>true</WillWipeDisk>
                </Disk>
                <WillShowUI>OnError</WillShowUI>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/DISPLAYNAME</Key>
                            <Value>Windows 10 專業版</Value>
                        </MetaData>
                    </InstallFrom>
                    <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>2</PartitionID>
                    </InstallTo>
                </OSImage>
            </ImageInstall>
        </component>
    </settings>
    <settings pass="specialize">
        <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">
            <RegisteredOwner>ABC</RegisteredOwner>
            <RegisteredOrganization>IT</RegisteredOrganization>
            <ComputerName>*</ComputerName>
        </component>
        <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">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Order>1</Order>
                    <Path>reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v ShippedWithReserves /t REG_DWORD /d 0 /f</Path>
                    <Description>Disable reserved storage for Windows 10 1903 and later...</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" 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">
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
            <UserLocale>zh-TW</UserLocale>
        </component>
        <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">
            <UserAccounts>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>cABhAHMAcwB3AG8AcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value>
                            <PlainText>false</PlainText>
                        </Password>
                        <Description>Administrative User</Description>
                        <DisplayName>admin</DisplayName>
                        <Group>Administrators</Group>
                        <Name>admin</Name>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
            <OOBE>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
            <AutoLogon>
                <Username>admin</Username>
                <Password>
                    <Value>cABhAHMAcwB3AG8AcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value>
                    <PlainText>false</PlainText>
                </Password>
                <Enabled>true</Enabled>
                <LogonCount>1</LogonCount>
            </AutoLogon>
            <FirstLogonCommands>
                <SynchronousCommand wcm:action="add">
                    <Order>1</Order>
                    <Description>Set Default Input Mode to Alphanumeric...</Description>
                    <CommandLine>reg add "HKCU\SOFTWARE\Microsoft\IME\15.0\IMETC" /v "Default Input Mode" /t REG_SZ /d "0x00000001" /f</CommandLine>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <Order>2</Order>
                    <Description>Post installation...</Description>
                    <CommandLine>cmd /c %WINDIR%\Setup\Scripts\MyPost.cmd</CommandLine>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <Order>3</Order>
                    <Description>Reboot...</Description>
                    <CommandLine>cmd /c Shutdown -r -f -t 180</CommandLine>
                </SynchronousCommand>
            </FirstLogonCommands>
        </component>
    </settings>
</unattend>


檔案2. MyPost.cmd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
REM ###########################################################
REM #  By Proliantaholic https://proliantaholic.blogspot.com  #
REM ###########################################################

Echo Turn off SMB 1.0/CIFS File Sharing Support...
powershell -Command "Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol -NoRestart >$null 2>&1"
Echo Done.
Echo.

REM Timeout in seconds
set /A timeout=100

CHOICE /T %timeout% /C YN /D N /M "Change Computer Name? (will be skipped in %timeout% seconds)"
if %ERRORLEVEL%==2 Echo Skipped&goto :RenCompNameDone
powershell -ExecutionPolicy Unrestricted -File %WINDIR%\Setup\Scripts\RenCompName.ps1
control /name microsoft.system
:RenCompNameDone
Echo Done.
pause

cd /d %~dp0
attrib -R -A -S -H *.*
RMDIR /S /Q %Systemroot%\Setup\Scripts


檔案3. RenCompName.ps1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
###########################################################
#  By Proliantaholic https://proliantaholic.blogspot.com  #
###########################################################

Write-Host "目前電腦名稱:" $env:computername
$NewComputerName = Read-Host -Prompt "輸入新的電腦名稱"
$go = Read-Host -Prompt "確定要更改電腦名稱? (Y/N)"
if (($go -eq "Y") -or ($go -eq "y")) {
    Rename-Computer -NewName $NewComputerName -PassThru
}

以上檔案使用Windows 10(版本 1909/19H2)繁體中文專業版安裝測試過
怕檔案編碼會搞錯的: 請按此下載


後記:
  • 個人認為使用自動安裝回應檔案的目的, 主要是希望能不要人為介入(輸入)就能自動裝完, 請依據實際狀況彈性調整回應檔跟批次處理的寫法.
  •  <AutoLogon><LogonCount>有個已知的問題, 就是會多AutoLogon一次. Windows 10才有此問題, Windows Server 2016/2019並不會多自動登入一次. 所以此篇的回應檔寫法, 雖然LogonCount為1, 在更改電腦名稱重啟後, 還是會再多自動登入到桌面一次(不用另外鍵入密碼). 要避免多自動登入一次的方法請參考: LogonCount


繼續閱讀:
PART Max 懶人包

2020年4月6日

P8 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART VIII 指定電腦名稱與加入網域


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

指定電腦名稱
電腦名稱可以在兩個階段指定(擇一使用):

windowsPE階段

specialize階段

(接下來用 specialize階段 的方式舉例)

1
2
3
4
5
6
7
8
9
<settings pass="specialize">
    <!-- 其他component -->
    <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">
        <RegisteredOwner>ABC</RegisteredOwner>
        <RegisteredOrganization>IT</RegisteredOrganization>
        <ComputerName>*</ComputerName>
    </component>
    <!-- 其他component -->
</settings>

  • 如果在自動安裝回應檔案中未指定ComputerName, Windows會隨機產生電腦名稱
  • 如果ComputerName設為自訂名稱(最多15個字元), 例如: MYPCNAME. 那每次透過此自動安裝回應檔案安裝的Windows電腦名稱都會是MYPCNAME, 不過電腦名稱都一樣的話容易導致衝突
  • 如果ComputerName設為星號 * 或是空字串, Windows會根據以下的規則順序組成一個15個字元的電腦名稱:
    1. 用RegisteredOwner加上RegisteredOrganization (最多取前面7個字元, 多的部分會截掉)
    2. 加上一個連字號 -
    3. 加上隨機字元補滿15個字元
以下為幾個電腦名稱的例子: (X表示為隨機產生的字元)

RegisteredOwner: ABC
RegisteredOrganization: IT
電腦名稱: ABCIT-XXXXXXXXX

RegisteredOwner: IT
電腦名稱: IT-XXXXXXXXXXXX

RegisteredOrganization: IT
電腦名稱: WINDOWS-XXXXXXX
(沒指定RegisteredOwner只指定RegisteredOrganization, 電腦名稱會變成WINDOWS開頭)

RegisteredOwner: ABCDE
RegisteredOrganization: 12345
電腦名稱: ABCDE12-XXXXXXX

RegisteredOwner: ABCDEFGHI
RegisteredOrganization: 12345
電腦名稱: ABCDEFG-XXXXXXX






注意:
根據 隱藏回應檔案中的機密資料 的說明

Windows系統映像管理員 (Windows SIM) 可以設定隱藏回應檔案中的密碼包括下列各項:
  • Microsoft-Windows-Shell-Setup | AutoLogon | Password
  • Microsoft-Windows-Shell-Setup | UserAccounts | AdministratorPassword
  • Microsoft-Windows-Shell-Setup | UserAccounts | LocalAccounts | LocalAccount | Password
並未包含加入網域會使用到的:
  • Microsoft-Windows-UnattendedJoin | Identification | Credentials | Password
加入網域
specialize階段
下列方法請斟酌使用, 建議用最小權限的帳戶來進行:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<settings pass="specialize">
    <!-- 其他component -->
        <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">
            <Identification>
               <Credentials>
                  <Domain>proliantaholic.lab</Domain>
                  <Password>minPassword</Password>
                  <Username>minUser</Username>
               </Credentials>
               <JoinDomain>proliantaholic.lab</JoinDomain>
            </Identification>
        </component>
    <!-- 其他component -->
</settings>


繼續閱讀:
PART IX 彈性搭配批次檔使用

2019年4月24日

P7 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART VII 不要預留[保留的儲存空間]


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

全新安裝的Windows 10 版本1903/19H1會預留大約7GB的儲存空間, 用來確保Windows 10在更新時有足夠的儲存空間可以運作.
此保留的空間跟所謂的[系統保留磁區]是不同的東西, 詳情可以參考: Windows 10 and reserved storage


目前知道只有全新安裝(或是以後新機器有預安裝系統的)Windows 10 版本1903/19H1才會有[保留的儲存空間], 由舊版的Windows升級上來則不會有.
而且如果系統已經安裝完成就無法取消[保留的儲存空間], 所以要在安裝時就取消[保留的儲存空間]. (如果你知道如何在安裝完系統後取消, 請不吝留言告訴我)
2020.03.05 補充: Windows 10 版本2004已經可以透過DISM停用[保留的儲存空間], 請看文末的補充.

specialize階段的內容修改如下: (搭配 PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能 舉例)
注意: 關閉[保留的儲存空間]非微軟建議選項, 請自行參酌使用.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<settings pass="specialize">
    <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">
        <RunSynchronous>
            <RunSynchronousCommand wcm:action="add">
                <Path>powershell Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol -NoRestart</Path>
                <Description>Turn off SMB 1.0/CIFS File Sharing Support...</Description>
                <Order>1</Order>
            </RunSynchronousCommand>
            <RunSynchronousCommand wcm:action="add">
                <Order>2</Order>
                <Path>reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v ShippedWithReserves /t REG_DWORD /d 0 /f</Path>
                <Description>Disable reserved storage for Windows 10 1903 and later...</Description>
            </RunSynchronousCommand>
        </RunSynchronous>
    </component>
</settings>


這樣Windows 10 版本1903/19H1安裝完成後就不會有[保留的儲存空間]了.


2020.03.05 補充:
以下方法僅適用於系統安裝完成的Windows 10 版本2004(或更新的版本), 版本1903/1909不適用
  • 檢視目前[保留的儲存空間]的狀態是啟用還是停用:
DISM.exe /Online /Get-ReservedStorageState
  • 停用[保留的儲存空間]:
DISM.exe /Online /Set-ReservedStorageState /State:Disabled
  • 啟用[保留的儲存空間]:
DISM.exe /Online /Set-ReservedStorageState /State:Enabled


Windows 10 版本1903/1909不適用:


繼續閱讀:
PART VIII 指定電腦名稱與加入網域

2018年10月7日

P6 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART VI 使用DiskPart建立磁碟分割


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

利用DiskPart建立磁碟分割後再安裝Windows會比直接寫在autounattend.xml內來得有彈性. (像是把Recovery tools分割擺在最後面)

以UEFI為例, DiskPart可以透過內含命令的文字檔來建立所需要的磁碟分割.
原理可參考: UEFI/GPT-based hard drive partitions

DiskParts.txt (注意: 會先清掉硬碟原先的分割和資料)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
select disk 0
clean
convert gpt
create partition efi size=100
format quick fs=fat32 label="System"
assign letter="S"
create partition msr size=16
create partition primary 
shrink minimum=500
format quick fs=ntfs label="Windows"
assign letter="W"
create partition primary
format quick fs=ntfs label="Recovery tools"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit


windowsPE階段的內容修改如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!-- By Proliantaholic https://proliantaholic.blogspot.com -->
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" 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">
            <SetupUILanguage>
                <UILanguage>zh-TW</UILanguage>
            </SetupUILanguage>
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
        </component>
        <component name="Microsoft-Windows-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">
            <UserData>
                <ProductKey>
                    <Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
                    <WillShowUI>OnError</WillShowUI>
                </ProductKey>
                <AcceptEula>true</AcceptEula>
            </UserData>
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Order>1</Order>
                    <Path>cmd /c DiskPart /s A:\DiskParts.txt</Path>
                    <Description>Create partitions</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
            <DiskConfiguration>
                <WillShowUI>OnError</WillShowUI>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/DISPLAYNAME</Key>
                            <Value>Windows 10 Pro</Value>
                        </MetaData>
                    </InstallFrom>
                    <InstallToAvailablePartition>true</InstallToAvailablePartition>
                    <WillShowUI>OnError</WillShowUI>                    
                </OSImage>
            </ImageInstall>
        </component>
    </settings>


安裝過程會看到類似這樣:


2020.05.05 補充: 另一種寫法, 可以判斷是BIOS還是UEFI模式, 呼叫DiskPart分割磁碟.
使用方法請參考: PART Max 懶人包
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
@echo off
REM ###########################################################
REM #  By Proliantaholic https://proliantaholic.blogspot.com  #
REM ###########################################################

for /f "tokens=9 delims= " %%i in ('find /i "Detected boot environment" "%systemdrive%\windows\Panther\setupact.log"') do set FirmwareType=%%i
if "%FirmwareType%" == "BIOS" goto BIOS
if "%FirmwareType%" == "EFI" goto UEFI
Echo Detection error!
pause
goto end

:BIOS
(
Echo select disk 0
Echo clean
Echo.
Echo create partition primary size=50
Echo format quick fs=ntfs
Echo assign letter="S"
Echo active
Echo.
Echo create partition primary
Echo shrink minimum=550
Echo format quick fs=ntfs
Echo assign letter="W"
Echo.
Echo create partition primary
Echo format quick fs=ntfs
Echo assign letter="R"
Echo set id=27
Echo.
Echo list volume
Echo exit
) > %TEMP%\BIOSpart.txt
DiskPart /s %TEMP%\BIOSpart.txt
Echo.
Echo Detected Firmware Type: %FirmwareType%
Echo Partitions created use: BIOSpart.txt
Echo.
goto end

:UEFI
(
Echo select disk 0
Echo clean
Echo convert gpt
Echo.
Echo create partition efi size=100
Echo format quick fs=fat32
Echo assign letter="S"
Echo.
Echo create partition msr size=16
Echo.
Echo create partition primary 
Echo shrink minimum=550
Echo format quick fs=ntfs
Echo assign letter="W"
Echo.
Echo create partition primary
Echo format quick fs=ntfs
Echo assign letter="R"
Echo set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
Echo gpt attributes=0x8000000000000001
Echo.
Echo list volume
Echo exit
) > %TEMP%\UEFIpart.txt
DiskPart /s %TEMP%\UEFIpart.txt
Echo.
Echo Detected Firmware Type: %FirmwareType%
Echo Partitions created use: UEFIpart.txt
Echo.
goto end

:end



繼續閱讀:
PART VII 不要預留[保留的儲存空間]

2017年5月16日

P5 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

最近勒索軟體病毒肆虐, 微軟其實一直都建議大家不要再使用SMB 1.0.
在回應檔案裏面加入PowerShell指令就可以在安裝Windows 10時關閉[SMB 1.0/CIFS 檔案共用支援]功能(預設是開啟的).
  • Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol -NoRestart

改好的autounattend.xml應該類似這樣:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" 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">
            <SetupUILanguage>
                <UILanguage>zh-TW</UILanguage>
            </SetupUILanguage>
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
        </component>
        <component name="Microsoft-Windows-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">
            <UserData>
                <ProductKey>
                    <Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
                    <WillShowUI>OnError</WillShowUI>
                </ProductKey>
                <AcceptEula>true</AcceptEula>
            </UserData>
            <DiskConfiguration>
                <Disk wcm:action="add">
                    <CreatePartitions>
                        <CreatePartition wcm:action="add">
                            <Order>1</Order>
                            <Size>500</Size>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Extend>true</Extend>
                            <Order>2</Order>
                            <Type>Primary</Type>
                        </CreatePartition>
                    </CreatePartitions>
                    <ModifyPartitions>
                        <ModifyPartition wcm:action="add">
                            <Active>true</Active>
                            <Format>NTFS</Format>
                            <Label>系統保留</Label>
                            <Order>1</Order>
                            <PartitionID>1</PartitionID>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Letter>C</Letter>
                            <Order>2</Order>
                            <PartitionID>2</PartitionID>
                        </ModifyPartition>
                    </ModifyPartitions>
                    <DiskID>0</DiskID>
                    <WillWipeDisk>true</WillWipeDisk>
                </Disk>
                <WillShowUI>OnError</WillShowUI>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/DISPLAYNAME</Key>
                            <Value>Windows 10 Pro</Value>
                        </MetaData>
                    </InstallFrom>
                    <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>2</PartitionID>
                    </InstallTo>
                </OSImage>
            </ImageInstall>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" 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">
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
            <UserLocale>zh-TW</UserLocale>
        </component>
        <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">
            <UserAccounts>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>cABhAHMAcwB3AG8AcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value>
                            <PlainText>false</PlainText>
                        </Password>
                        <Description>Administrative User</Description>
                        <DisplayName>admin</DisplayName>
                        <Group>Administrators</Group>
                        <Name>admin</Name>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
            <OOBE>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
    <settings pass="specialize">
        <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">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>powershell Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol -NoRestart</Path>
                    <Description>Turn off SMB 1.0/CIFS File Sharing Support...</Description>
                    <Order>1</Order>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
    </settings>
</unattend>

安裝過程會看到:


安裝完成後確認:




繼續閱讀:
PART VI 使用DiskPart建立磁碟分割

2017年4月14日

P4 如何用 Windows系統映像管理員(Windows System Image Manager) 製作Windows 10自動安裝回應檔案
PART IV 如何使用


PART I 準備工作
PART II 瞭解Windows 10安裝過程
PART III 製作自動安裝回應檔案
PART IV 如何使用
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能
PART VI 使用DiskPart建立磁碟分割
PART VII 不要預留[保留的儲存空間]
PART VIII 指定電腦名稱與加入網域
PART IX 彈性搭配批次檔使用
PART Max 懶人包

做好了autounattend.xml後要怎麼讓Windows 10自動安裝呢?

方法不只一種, 依照你的需求選擇:

如果你要用USB flash drive開機安裝Windows 10, 那就把autounattend.xml複製到根目錄(跟setup.exe同一層), 開機後setup自己就會根據autounattend.xml的內容去安裝Windows 10.

如果你要用光碟開機安裝Windows 10:
  • 願意動原版ISO內容:
    用像UltraISO的程式編輯ISO, 把autounattend.xml複製到根目錄(跟setup.exe同一層), 燒成另一張光碟或是掛到VM上使用.

  • 不願意動原版ISO內容:
    那就需要有軟碟(floppy disk)或是USB flash key, 一樣是把autounattend.xml複製到根目錄.
由光碟開機後setup自己就會找到autounattend.xml, 並根據其內容去安裝Windows 10.
Floppy disk或是USB flash key最好是non-bootable, 並且除了autounattend.xml沒有別的檔案, 免得安裝安裝過程系統自動重啟結果跳到不對的地方.
如果是用VM測試的話就是準備Windows 10原版ISO配合floppy的映像檔(內包含autounattend.xml)就可以自動安裝了.

有許工具程式可以產生floppy disk的映像檔, 像是UltraISO, MagicISO, WinImage...等.

用VMware Workstation也可以產生floppy disk的映像檔. (先用另一台有OS的VM掛載映像, format後把autounattend.xml複製到根目錄)




做好的autounattend.xml應該類似這樣:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<!-- By Proliantaholic https://proliantaholic.blogspot.com -->
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" 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">
            <SetupUILanguage>
                <UILanguage>zh-TW</UILanguage>
            </SetupUILanguage>
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
        </component>
        <component name="Microsoft-Windows-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">
            <UserData>
                <ProductKey>
                    <Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
                    <WillShowUI>OnError</WillShowUI>
                </ProductKey>
                <AcceptEula>true</AcceptEula>
            </UserData>
            <DiskConfiguration>
                <Disk wcm:action="add">
                    <CreatePartitions>
                        <CreatePartition wcm:action="add">
                            <Order>1</Order>
                            <Size>500</Size>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Extend>true</Extend>
                            <Order>2</Order>
                            <Type>Primary</Type>
                        </CreatePartition>
                    </CreatePartitions>
                    <ModifyPartitions>
                        <ModifyPartition wcm:action="add">
                            <Active>true</Active>
                            <Format>NTFS</Format>
                            <Label>系統保留</Label>
                            <Order>1</Order>
                            <PartitionID>1</PartitionID>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Letter>C</Letter>
                            <Order>2</Order>
                            <PartitionID>2</PartitionID>
                        </ModifyPartition>
                    </ModifyPartitions>
                    <DiskID>0</DiskID>
                    <WillWipeDisk>true</WillWipeDisk>
                </Disk>
                <WillShowUI>OnError</WillShowUI>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/DISPLAYNAME</Key>
                            <Value>Windows 10 Pro</Value>
                        </MetaData>
                    </InstallFrom>
                    <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>2</PartitionID>
                    </InstallTo>
                </OSImage>
            </ImageInstall>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" 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">
            <InputLocale>zh-TW</InputLocale>
            <SystemLocale>zh-TW</SystemLocale>
            <UILanguage>zh-TW</UILanguage>
            <UserLocale>zh-TW</UserLocale>
        </component>
        <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">
            <UserAccounts>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>cABhAHMAcwB3AG8AcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value>
                            <PlainText>false</PlainText>
                        </Password>
                        <Description>Administrative User</Description>
                        <DisplayName>admin</DisplayName>
                        <Group>Administrators</Group>
                        <Name>admin</Name>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
            <OOBE>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
</unattend>

透過自動安裝回應檔案可以設定的東西還有很多, 大家可以依照自己的需要再去測試修改.

以下是我用做好的自動安裝回應檔案在VM上安裝Windows 10的過程畫面, 可以看到在安裝過程中並不需要輸入任何資料或選擇東西. 到最後會以admin使用者登入(需要輸入password), 到達桌面後Windows 10安裝便完成了.





繼續閱讀:
PART V 關閉[SMB 1.0/CIFS 檔案共用支援]功能

版權宣告

Creative Commons License
本著作由 PROLIANTAHOLIC 製作,以創用CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款釋出。
文內所述之產品和公司名稱均為其各自擁有者的商標及(或)服務標記。