├── ET.sln
├── ET
├── App.config
├── ET-LOGO-BIG.png
├── ET.csproj
├── ET.csproj.user
├── ET_TemporaryKey.pfx
├── Form1.Designer.cs
├── Form1.cs
├── Form1.resx
├── Newtonsoft.Json.dll
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ ├── ET-BIG-LOGO.png
│ ├── HowTo-ISO.png
│ ├── Make-ISO.txt
│ ├── autounattend.xml
│ ├── battery-charge.png
│ ├── cpu-tower.png
│ └── ram.png
├── app.ico
├── app.manifest
├── bin
│ └── Debug
│ │ ├── Copy_To_ISO
│ │ ├── ET-Optimizer.exe
│ │ ├── HowTo-ISO.png
│ │ └── autounattend.xml
│ │ ├── ET.exe
│ │ ├── ET.exe.config
│ │ ├── ET.pdb
│ │ ├── Microsoft.Bcl.AsyncInterfaces.dll
│ │ ├── Microsoft.Bcl.AsyncInterfaces.xml
│ │ ├── Microsoft.Win32.TaskScheduler.dll
│ │ ├── Microsoft.Win32.TaskScheduler.xml
│ │ ├── Newtonsoft.Json.dll
│ │ ├── Newtonsoft.Json.xml
│ │ ├── System.Buffers.dll
│ │ ├── System.Buffers.xml
│ │ ├── System.IO.Pipelines.dll
│ │ ├── System.IO.Pipelines.xml
│ │ ├── System.Memory.dll
│ │ ├── System.Memory.xml
│ │ ├── System.Numerics.Vectors.dll
│ │ ├── System.Numerics.Vectors.xml
│ │ ├── System.Runtime.CompilerServices.Unsafe.dll
│ │ ├── System.Runtime.CompilerServices.Unsafe.xml
│ │ ├── System.Security.AccessControl.dll
│ │ ├── System.Security.AccessControl.xml
│ │ ├── System.Security.Permissions.dll
│ │ ├── System.Security.Permissions.xml
│ │ ├── System.Security.Principal.Windows.dll
│ │ ├── System.Security.Principal.Windows.xml
│ │ ├── System.Text.Encodings.Web.dll
│ │ ├── System.Text.Encodings.Web.xml
│ │ ├── System.Text.Json.dll
│ │ ├── System.Text.Json.xml
│ │ ├── System.Threading.Tasks.Extensions.dll
│ │ ├── System.Threading.Tasks.Extensions.xml
│ │ ├── System.ValueTuple.dll
│ │ ├── System.ValueTuple.xml
│ │ ├── app.publish
│ │ └── ET.exe
│ │ ├── bcdstate.txt
│ │ ├── de
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── es
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── fr
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── it
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── ja
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── pl
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── ru
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── sv
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── tr
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ ├── zh-CN
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
│ │ └── zh-Hant
│ │ └── Microsoft.Win32.TaskScheduler.resources.dll
├── obj
│ ├── Debug
│ │ ├── DesignTimeResolveAssemblyReferences.cache
│ │ ├── DesignTimeResolveAssemblyReferencesInput.cache
│ │ ├── ET.Form1.resources
│ │ ├── ET.Properties.Resources.resources
│ │ ├── ET.csproj.AssemblyReference.cache
│ │ ├── ET.csproj.CoreCompileInputs.cache
│ │ ├── ET.csproj.FileListAbsolute.txt
│ │ ├── ET.csproj.GenerateResource.cache
│ │ ├── ET.csproj.Up2Date
│ │ ├── ET.exe
│ │ ├── ET.exe.config
│ │ ├── ET.pdb
│ │ └── TempPE
│ │ │ └── Properties.Resources.Designer.cs.dll
│ └── Release
│ │ ├── ET.csproj.AssemblyReference.cache
│ │ └── ET.csproj.FileListAbsolute.txt
└── packages.config
├── HowTo-ISO.png
├── LICENSE
├── Make-ISO.ps1
├── README.md
└── autounattend.xml
/ET.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.11.35219.272
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ET", "ET\ET.csproj", "{76FD9E81-A5FB-4AC1-BE9C-9A6CD1E19628}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {76FD9E81-A5FB-4AC1-BE9C-9A6CD1E19628}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {76FD9E81-A5FB-4AC1-BE9C-9A6CD1E19628}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {76FD9E81-A5FB-4AC1-BE9C-9A6CD1E19628}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {76FD9E81-A5FB-4AC1-BE9C-9A6CD1E19628}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {715527E0-A566-4282-ADF0-F52B5938A993}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/ET/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ET/ET-LOGO-BIG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/ET-LOGO-BIG.png
--------------------------------------------------------------------------------
/ET/ET.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {76FD9E81-A5FB-4AC1-BE9C-9A6CD1E19628}
8 | WinExe
9 | ET
10 | ET
11 | v4.7.2
12 | 512
13 | true
14 | true
15 | false
16 | C:\Users\Rikey\Desktop\
17 | true
18 | Disk
19 | false
20 | Foreground
21 | 7
22 | Days
23 | false
24 | false
25 | true
26 | true
27 | 0
28 | 5.6.0.%2a
29 | false
30 | true
31 | true
32 |
33 |
34 | AnyCPU
35 | true
36 | full
37 | true
38 | bin\Debug\
39 | DEBUG;TRACE
40 | prompt
41 | 4
42 | false
43 | true
44 |
45 |
46 | AnyCPU
47 | pdbonly
48 | true
49 | bin\Release\
50 | TRACE
51 | prompt
52 | 4
53 |
54 |
55 | app.ico
56 |
57 |
58 | app.manifest
59 |
60 |
61 | LocalIntranet
62 |
63 |
64 | false
65 |
66 |
67 | true
68 |
69 |
70 | 15D7972A959D21CC6E7CC372BB54FBD6207367DF
71 |
72 |
73 | ET_TemporaryKey.pfx
74 |
75 |
76 |
77 | ..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.4\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll
78 |
79 |
80 | ..\packages\TaskScheduler.2.12.1\lib\net45\Microsoft.Win32.TaskScheduler.dll
81 |
82 |
83 | ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
84 |
85 |
86 |
87 | ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 | ..\packages\System.IO.Pipelines.9.0.4\lib\net462\System.IO.Pipelines.dll
96 |
97 |
98 |
99 | ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
100 |
101 |
102 |
103 |
104 | ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
105 |
106 |
107 | ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
108 |
109 |
110 |
111 | ..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll
112 |
113 |
114 | ..\packages\System.Security.Permissions.9.0.4\lib\net462\System.Security.Permissions.dll
115 |
116 |
117 | ..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll
118 |
119 |
120 |
121 | ..\packages\System.Text.Encodings.Web.9.0.4\lib\net462\System.Text.Encodings.Web.dll
122 |
123 |
124 | ..\packages\System.Text.Json.9.0.4\lib\net462\System.Text.Json.dll
125 |
126 |
127 | ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
128 |
129 |
130 |
131 | ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 | Form
147 |
148 |
149 | Form1.cs
150 |
151 |
152 |
153 |
154 | Form1.cs
155 |
156 |
157 | ResXFileCodeGenerator
158 | Resources.Designer.cs
159 | Designer
160 |
161 |
162 | True
163 | Resources.resx
164 | True
165 |
166 |
167 |
168 |
169 |
170 | SettingsSingleFileGenerator
171 | Settings.Designer.cs
172 |
173 |
174 | True
175 | Settings.settings
176 | True
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 | False
197 | Microsoft .NET Framework 4.7.2 %28x86 i x64%29
198 | true
199 |
200 |
201 | False
202 | .NET Framework 3.5 SP1
203 | false
204 |
205 |
206 |
207 |
208 |
--------------------------------------------------------------------------------
/ET/ET.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | C:\Users\Rikey\Desktop\|publikuj\
5 |
6 |
7 |
8 |
9 |
10 | pl-PL
11 | false
12 |
13 |
--------------------------------------------------------------------------------
/ET/ET_TemporaryKey.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/ET_TemporaryKey.pfx
--------------------------------------------------------------------------------
/ET/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/ET/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using System.Windows.Forms;
4 |
5 | namespace ET
6 | {
7 | internal static class Program
8 | {
9 | [STAThread]
10 | static void Main(string[] aargs)
11 | {
12 | AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
13 | {
14 | var assemblyName = new System.Reflection.AssemblyName(args.Name).Name + ".dll";
15 | var resourceName = typeof(Program).Assembly.GetManifestResourceNames()
16 | .FirstOrDefault(r => r.EndsWith(assemblyName));
17 |
18 | if (resourceName == null)
19 | return null;
20 |
21 | using (var stream = typeof(Program).Assembly.GetManifestResourceStream(resourceName))
22 | {
23 | if (stream == null) return null;
24 |
25 | byte[] assemblyData = new byte[stream.Length];
26 | stream.Read(assemblyData, 0, assemblyData.Length);
27 | return System.Reflection.Assembly.Load(assemblyData);
28 | }
29 | };
30 |
31 |
32 | Application.EnableVisualStyles();
33 | Application.SetCompatibleTextRenderingDefault(false);
34 | string[] argsToPass = (aargs != null && aargs.Length > 0) ? aargs : new string[0];
35 | Application.Run(new Form1(argsToPass));
36 |
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/ET/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 | using System.Runtime.InteropServices;
4 |
5 | // Ogólne informacje o zestawie są kontrolowane poprzez następujący
6 | // zestaw atrybutów. Zmień wartości tych atrybutów, aby zmodyfikować informacje
7 | // powiązane z zestawem.
8 | [assembly: AssemblyTitle("ET-Optimizer")]
9 | [assembly: AssemblyDescription("Optimize performance, improve privacy, and remove bloatware.")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Sebastian Mazurek")]
12 | [assembly: AssemblyProduct("ET-Optimizer")]
13 | [assembly: AssemblyCopyright("Sebastian Mazurek Copyright © 2025")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Ustawienie elementu ComVisible na wartość false sprawia, że typy w tym zestawie są niewidoczne
18 | // dla składników COM. Jeśli potrzebny jest dostęp do typu w tym zestawie z
19 | // COM, ustaw wartość true dla atrybutu ComVisible tego typu.
20 | [assembly: ComVisible(false)]
21 |
22 | // Następujący identyfikator GUID jest identyfikatorem biblioteki typów w przypadku udostępnienia tego projektu w modelu COM
23 | [assembly: Guid("76fd9e81-a5fb-4ac1-be9c-9a6cd1e19628")]
24 |
25 | // Informacje o wersji zestawu zawierają następujące cztery wartości:
26 | //
27 | // Wersja główna
28 | // Wersja pomocnicza
29 | // Numer kompilacji
30 | // Poprawka
31 | //
32 | [assembly: AssemblyVersion("6.06.10.0")]
33 | [assembly: AssemblyFileVersion("6.06.10.0")]
34 | [assembly: NeutralResourcesLanguage("en")]
35 |
--------------------------------------------------------------------------------
/ET/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ten kod został wygenerowany przez narzędzie.
4 | // Wersja wykonawcza:4.0.30319.42000
5 | //
6 | // Zmiany w tym pliku mogą spowodować nieprawidłowe zachowanie i zostaną utracone, jeśli
7 | // kod zostanie ponownie wygenerowany.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ET.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// Klasa zasobu wymagająca zdefiniowania typu do wyszukiwania zlokalizowanych ciągów itd.
17 | ///
18 | // Ta klasa została automatycznie wygenerowana za pomocą klasy StronglyTypedResourceBuilder
19 | // przez narzędzie, takie jak ResGen lub Visual Studio.
20 | // Aby dodać lub usunąć składową, edytuj plik ResX, a następnie ponownie uruchom narzędzie ResGen
21 | // z opcją /str lub ponownie utwórz projekt VS.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Zwraca buforowane wystąpienie ResourceManager używane przez tę klasę.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ET.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Przesłania właściwość CurrentUICulture bieżącego wątku dla wszystkich
51 | /// przypadków przeszukiwania zasobów za pomocą tej klasy zasobów wymagającej zdefiniowania typu.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Wyszukuje zlokalizowany ciąg podobny do ciągu <?xml version="1.0" encoding="utf-8"?>
65 | ///<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
66 | /// <settings pass="offlineServicing"></settings>
67 | /// <settings pass="windowsPE">
68 | /// <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
69 | /// <UserData>
70 | /// <ProductKey>
71 | /// <Key>00000-00000-00000-00000-00000</Key>
72 | /// <WillShowUI>Always</WillShowUI>
73 | /// </Pr [obcięto pozostałą część ciągu]";.
74 | ///
75 | internal static string autounattend {
76 | get {
77 | return ResourceManager.GetString("autounattend", resourceCulture);
78 | }
79 | }
80 |
81 | ///
82 | /// Wyszukuje zlokalizowany zasób typu System.Drawing.Bitmap.
83 | ///
84 | internal static System.Drawing.Bitmap battery_charge {
85 | get {
86 | object obj = ResourceManager.GetObject("battery_charge", resourceCulture);
87 | return ((System.Drawing.Bitmap)(obj));
88 | }
89 | }
90 |
91 | ///
92 | /// Wyszukuje zlokalizowany zasób typu System.Drawing.Bitmap.
93 | ///
94 | internal static System.Drawing.Bitmap cpu_tower {
95 | get {
96 | object obj = ResourceManager.GetObject("cpu_tower", resourceCulture);
97 | return ((System.Drawing.Bitmap)(obj));
98 | }
99 | }
100 |
101 | ///
102 | /// Wyszukuje zlokalizowany zasób typu System.Drawing.Bitmap.
103 | ///
104 | internal static System.Drawing.Bitmap ET_LOGO_BIG {
105 | get {
106 | object obj = ResourceManager.GetObject("ET_LOGO_BIG", resourceCulture);
107 | return ((System.Drawing.Bitmap)(obj));
108 | }
109 | }
110 |
111 | ///
112 | /// Wyszukuje zlokalizowany zasób typu System.Drawing.Bitmap.
113 | ///
114 | internal static System.Drawing.Bitmap HowTo_ISO {
115 | get {
116 | object obj = ResourceManager.GetObject("HowTo_ISO", resourceCulture);
117 | return ((System.Drawing.Bitmap)(obj));
118 | }
119 | }
120 |
121 | ///
122 | /// Wyszukuje zlokalizowany ciąg podobny do ciągu [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="Low")]
123 | /// Param
124 | /// (
125 | /// [parameter(Mandatory=$true,ValueFromPipeline=$false)]
126 | /// [string]$isoPath
127 | /// )
128 | ///#$isoPath = "pl-pl_windows_11_consumer_editions_version_24h2_updated_april_2025_x64_dvd_ea86301d.iso"
129 | ///$tempFolder = "$env:SystemDrive\iso_temp"
130 | ///$newFile = "Copy_To_ISO\ET-Optimizer.exe"
131 | ///$newFile2 = "Copy_To_ISO\autounattend.xml"
132 | ///
133 | ///cls
134 | ///[console]::WindowWidth = 120
135 | ///[console]::WindowHeight = 40
136 | ///$Host.UI.RawUI.BackgroundColor [obcięto pozostałą część ciągu]";.
137 | ///
138 | internal static string Make_ISO {
139 | get {
140 | return ResourceManager.GetString("Make_ISO", resourceCulture);
141 | }
142 | }
143 |
144 | ///
145 | /// Wyszukuje zlokalizowany zasób typu System.Drawing.Bitmap.
146 | ///
147 | internal static System.Drawing.Bitmap ram {
148 | get {
149 | object obj = ResourceManager.GetObject("ram", resourceCulture);
150 | return ((System.Drawing.Bitmap)(obj));
151 | }
152 | }
153 | }
154 | }
155 |
--------------------------------------------------------------------------------
/ET/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\autounattend.xml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1250
123 |
124 |
125 | ..\Resources\battery-charge.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\cpu-tower.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\ET-LOGO-BIG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
134 | ..\Resources\HowTo-ISO.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
135 |
136 |
137 | ..\Resources\Make-ISO.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
138 |
139 |
140 | ..\Resources\ram.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
141 |
142 |
--------------------------------------------------------------------------------
/ET/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ten kod został wygenerowany przez narzędzie.
4 | // Wersja wykonawcza:4.0.30319.42000
5 | //
6 | // Zmiany w tym pliku mogą spowodować nieprawidłowe zachowanie i zostaną utracone, jeśli
7 | // kod zostanie ponownie wygenerowany.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ET.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.11.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ET/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ET/Resources/ET-BIG-LOGO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/Resources/ET-BIG-LOGO.png
--------------------------------------------------------------------------------
/ET/Resources/HowTo-ISO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/Resources/HowTo-ISO.png
--------------------------------------------------------------------------------
/ET/Resources/Make-ISO.txt:
--------------------------------------------------------------------------------
1 | [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="Low")]
2 | Param
3 | (
4 | [parameter(Mandatory=$true,ValueFromPipeline=$false)]
5 | [string]$isoPath
6 | )
7 | #$isoPath = "pl-pl_windows_11_consumer_editions_version_24h2_updated_april_2025_x64_dvd_ea86301d.iso"
8 | $tempFolder = "$env:SystemDrive\iso_temp"
9 | $newFile = "Copy_To_ISO\ET-Optimizer.exe"
10 | $newFile2 = "Copy_To_ISO\autounattend.xml"
11 |
12 | cls
13 | [console]::WindowWidth = 120
14 | [console]::WindowHeight = 40
15 | $Host.UI.RawUI.BackgroundColor = 'Blue'
16 | $Host.UI.RawUI.ForegroundColor = 'White'
17 | $host.ui.RawUI.WindowTitle = "ET-Optimizer ISO Creator"
18 |
19 | # === Instalacja narzędzi z winget ===
20 | winget install --id=7zip.7zip -e --disable-interactivity --silent --accept-source-agreements --accept-package-agreements
21 | cls
22 |
23 | # === Ścieżki do programów ===
24 | $sevenZip = "${env:ProgramFiles}\7-Zip\7z.exe"
25 | if (-Not (Test-Path $sevenZip)) {
26 | $sevenZip = "${env:ProgramFiles(x86)}\7-Zip\7z.exe"
27 | }
28 |
29 | # === Wypakowanie ISO ===
30 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $tempFolder
31 | New-Item -ItemType Directory -Path $tempFolder | Out-Null
32 |
33 | & "$sevenZip" x "`"$isoPath`"" -o"$tempFolder" -y
34 |
35 | # === Dodaj nowy plik ===
36 | Copy-Item -Path $newFile -Destination $tempFolder -Force
37 | Copy-Item -Path $newFile2 -Destination $tempFolder -Force
38 |
39 | cls
40 | function New-ISOFile {
41 | <#
42 | .SYNOPSIS
43 | Create an ISO file from a source folder.
44 |
45 | .DESCRIPTION
46 | Create an ISO file from a source folder.
47 | Optionally speicify a boot image and media type.
48 |
49 | Based on original function by Chris Wu.
50 | https://gallery.technet.microsoft.com/scriptcenter/New-ISOFile-function-a8deeffd (link appears to be no longer valid.)
51 |
52 | Changes:
53 | - Updated to work with PowerShell 7
54 | - Added a bit more error handling and verbose output.
55 | - Features removed to simplify code:
56 | * Clipboard support.
57 | * Pipeline input.
58 |
59 | .PARAMETER source
60 | The source folder to add to the ISO.
61 |
62 | .PARAMETER destinationIso
63 | The ISO file to create.
64 |
65 | .PARAMETER bootFile
66 | Optional. Boot file to add to the ISO.
67 |
68 | .PARAMETER media
69 | Optional. The media type of the resulting ISO (BDR, CDR etc). Defaults to DVDPLUSRW_DUALLAYER.
70 |
71 | .PARAMETER title
72 | Optional. Title of the ISO file. Defaults to "untitled".
73 |
74 | .PARAMETER force
75 | Optional. Force overwrite of an existing ISO file.
76 |
77 | .INPUTS
78 | None.
79 |
80 | .OUTPUTS
81 | None.
82 |
83 | .EXAMPLE
84 | New-ISOFile -source c:\forIso\ -destinationIso C:\ISOs\testiso.iso
85 |
86 | Simple example. Create testiso.iso with the contents from c:\forIso
87 |
88 | .EXAMPLE
89 | New-ISOFile -source f:\ -destinationIso C:\ISOs\windowsServer2019Custom.iso -bootFile F:\efi\microsoft\boot\efisys.bin -title "Windows2019"
90 |
91 | Example building Windows media. Add the contents of f:\ to windowsServer2019Custom.iso. Use efisys.bin to make the disc bootable.
92 |
93 | .LINK
94 |
95 | .NOTES
96 | 01 Alistair McNair Initial version.
97 |
98 | #>
99 | [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="Low")]
100 | Param
101 | (
102 | [parameter(Mandatory=$true,ValueFromPipeline=$false)]
103 | [string]$source,
104 | [parameter(Mandatory=$true,ValueFromPipeline=$false)]
105 | [string]$destinationIso,
106 | [parameter(Mandatory=$false,ValueFromPipeline=$false)]
107 | [string]$bootFile = $null,
108 | [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
109 | [ValidateSet("CDR","CDRW","DVDRAM","DVDPLUSR","DVDPLUSRW","DVDPLUSR_DUALLAYER","DVDDASHR","DVDDASHRW","DVDDASHR_DUALLAYER","DISK","DVDPLUSRW_DUALLAYER","BDR","BDRE")]
110 | [string]$media = "DVDPLUSRW_DUALLAYER",
111 | [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
112 | [string]$title = "untitled",
113 | [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
114 | [switch]$force
115 | )
116 |
117 | begin {
118 |
119 | Write-Verbose ("Function start.")
120 |
121 | } # begin
122 |
123 | process {
124 |
125 | Write-Verbose ("Processing nested system " + $vmName)
126 |
127 | ## Set type definition
128 | Write-Verbose ("Adding ISOFile type.")
129 |
130 | $typeDefinition = @'
131 | public class ISOFile {
132 | public unsafe static void Create(string Path, object Stream, int BlockSize, int TotalBlocks) {
133 | int bytes = 0;
134 | byte[] buf = new byte[BlockSize];
135 | var ptr = (System.IntPtr)(&bytes);
136 | var o = System.IO.File.OpenWrite(Path);
137 | var i = Stream as System.Runtime.InteropServices.ComTypes.IStream;
138 |
139 | if (o != null) {
140 | while (TotalBlocks-- > 0) {
141 | i.Read(buf, BlockSize, ptr); o.Write(buf, 0, bytes);
142 | }
143 |
144 | o.Flush(); o.Close();
145 | }
146 | }
147 | }
148 | '@
149 |
150 | ## Create type ISOFile, if not already created. Different actions depending on PowerShell version
151 | if (!('ISOFile' -as [type])) {
152 |
153 | ## Add-Type works a little differently depending on PowerShell version.
154 | ## https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/add-type
155 | switch ($PSVersionTable.PSVersion.Major) {
156 |
157 | ## 7 and (hopefully) later versions
158 | {$_ -ge 7} {
159 | Write-Verbose ("Adding type for PowerShell 7 or later.")
160 | Add-Type -CompilerOptions "/unsafe" -TypeDefinition $typeDefinition
161 | } # PowerShell 7
162 |
163 | ## 5, and only 5. We aren't interested in previous versions.
164 | 5 {
165 | Write-Verbose ("Adding type for PowerShell 5.")
166 | $compOpts = New-Object System.CodeDom.Compiler.CompilerParameters
167 | $compOpts.CompilerOptions = "/unsafe"
168 |
169 | Add-Type -CompilerParameters $compOpts -TypeDefinition $typeDefinition
170 | } # PowerShell 5
171 |
172 | default {
173 | ## If it's not 7 or later, and it's not 5, then we aren't doing it.
174 | throw ("Unsupported PowerShell version.")
175 |
176 | } # default
177 |
178 | } # switch
179 |
180 | } # if
181 |
182 |
183 | ## Add boot file to image
184 | if ($bootFile) {
185 |
186 | Write-Verbose ("Optional boot file " + $bootFile + " has been specified.")
187 |
188 | ## Display warning if Blu Ray media is used with a boot file.
189 | ## Not sure why this doesn't work.
190 | if(@('BDR','BDRE') -contains $media) {
191 | Write-Warning ("Selected boot image may not work with BDR/BDRE media types.")
192 | } # if
193 |
194 | if (!(Test-Path -Path $bootFile)) {
195 | throw ($bootFile + " is not valid.")
196 | } # if
197 |
198 | ## Set stream type to binary and load in boot file
199 | Write-Verbose ("Loading boot file.")
200 |
201 | try {
202 | $stream = New-Object -ComObject ADODB.Stream -Property @{Type=1} -ErrorAction Stop
203 | $stream.Open()
204 | $stream.LoadFromFile((Get-Item -LiteralPath $bootFile).Fullname)
205 |
206 | Write-Verbose ("Boot file loaded.")
207 | } # try
208 | catch {
209 | throw ("Failed to open boot file. " + $_.exception.message)
210 | } # catch
211 |
212 |
213 | ## Apply the boot image
214 | Write-Verbose ("Applying boot image.")
215 |
216 | try {
217 | $boot = New-Object -ComObject IMAPI2FS.BootOptions -ErrorAction Stop
218 | $boot.AssignBootImage($stream)
219 |
220 | Write-Verbose ("Boot image applied.")
221 | } # try
222 | catch {
223 | throw ("Failed to apply boot file. " + $_.exception.message)
224 | } # catch
225 |
226 |
227 | Write-Verbose ("Boot file applied.")
228 |
229 | } # if
230 |
231 | ## Build array of media types
232 | $mediaType = @(
233 | "UNKNOWN",
234 | "CDROM",
235 | "CDR",
236 | "CDRW",
237 | "DVDROM",
238 | "DVDRAM",
239 | "DVDPLUSR",
240 | "DVDPLUSRW",
241 | "DVDPLUSR_DUALLAYER",
242 | "DVDDASHR",
243 | "DVDDASHRW",
244 | "DVDDASHR_DUALLAYER",
245 | "DISK",
246 | "DVDPLUSRW_DUALLAYER",
247 | "HDDVDROM",
248 | "HDDVDR",
249 | "HDDVDRAM",
250 | "BDROM",
251 | "BDR",
252 | "BDRE"
253 | )
254 |
255 | Write-Verbose ("Selected media type is " + $media + " with value " + $mediaType.IndexOf($media))
256 |
257 | ## Initialise image
258 | Write-Verbose ("Initialising image object.")
259 | try {
260 | $image = New-Object -ComObject IMAPI2FS.MsftFileSystemImage -Property @{VolumeName=$title} -ErrorAction Stop
261 | $image.ChooseImageDefaultsForMediaType($mediaType.IndexOf($media))
262 |
263 | Write-Verbose ("initialised.")
264 | } # try
265 | catch {
266 | throw ("Failed to initialise image. " + $_.exception.Message)
267 | } # catch
268 |
269 |
270 | ## Create target ISO, throw if file exists and -force parameter is not used.
271 | if ($PSCmdlet.ShouldProcess($destinationIso)) {
272 |
273 | if (!($targetFile = New-Item -Path $destinationIso -ItemType File -Force:$Force -ErrorAction SilentlyContinue)) {
274 | throw ("Cannot create file " + $destinationIso + ". Use -Force parameter to overwrite if the target file already exists.")
275 | } # if
276 |
277 | } # if
278 |
279 |
280 | ## Get source content from specified path
281 | Write-Verbose ("Fetching items from source directory.")
282 | try {
283 | $sourceItems = Get-ChildItem -LiteralPath $source -ErrorAction Stop
284 | Write-Verbose ("Got source items.")
285 | } # try
286 | catch {
287 | throw ("Failed to get source items. " + $_.exception.message)
288 | } # catch
289 |
290 |
291 | ## Add these to our image
292 | Write-Verbose ("Adding items to image.")
293 |
294 | $totalItems = $sourceItems.Count
295 | $currentItem = 0
296 |
297 | foreach($sourceItem in $sourceItems) {
298 | $currentItem++
299 | $percent = [math]::Round(($currentItem / $totalItems) * 100)
300 |
301 | Write-Progress -Activity "Creating ISO" `
302 | -Status "Adding $($sourceItem.Name) ($currentItem z $totalItems)" `
303 | -PercentComplete $percent
304 |
305 | try {
306 | $image.Root.AddTree($sourceItem.FullName, $true)
307 | } # try
308 | catch {
309 | throw ("Failed to add " + $sourceItem.fullname + ". " + $_.exception.message)
310 | } # catch
311 | }
312 |
313 | ## Add boot file, if specified
314 | if ($boot) {
315 | Write-Verbose ("Adding boot image.")
316 | $Image.BootImageOptions = $boot
317 | }
318 |
319 | ## Write out ISO file
320 | Write-Verbose ("Writing out ISO file to " + $targetFile)
321 |
322 | try {
323 | $result = $image.CreateResultImage()
324 | [ISOFile]::Create($targetFile.FullName,$result.ImageStream,$result.BlockSize,$result.TotalBlocks)
325 | } # try
326 | catch {
327 | throw ("Failed to write ISO file. " + $_.exception.Message)
328 | } # catch
329 |
330 | Write-Verbose ("File complete.")
331 |
332 | ## Return file details
333 | return $targetFile
334 |
335 | } # process
336 |
337 | end {
338 | Remove-Item -Path $tempFolder -Recurse -Force -ErrorAction SilentlyContinue
339 | cls
340 | Write-Verbose ("Done.")
341 | } # end
342 |
343 | } # function
344 |
345 | New-ISOFile -source $tempFolder -destinationIso Copy_To_ISO\ET-OS.iso -bootfile $tempFolder\efi\microsoft\boot\efisys_noprompt.bin -title "ET-OS" -Verbose
346 |
--------------------------------------------------------------------------------
/ET/Resources/autounattend.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 00000-00000-00000-00000-00000
9 | Always
10 |
11 | true
12 |
13 | false
14 |
15 |
16 | 1
17 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
18 |
19 |
20 | 2
21 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
22 |
23 |
24 | 3
25 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 1
36 | powershell.exe -WindowStyle Hidden -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"
37 |
38 |
39 | 2
40 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\Specialize.ps1' -Raw | Invoke-Expression;"
41 |
42 |
43 | 3
44 | reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"
45 |
46 |
47 | 4
48 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\DefaultUser.ps1' -Raw | Invoke-Expression;"
49 |
50 |
51 | 5
52 | reg.exe unload "HKU\DefaultUser"
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | 3
63 | true
64 | false
65 | true
66 |
67 |
68 |
69 | 1
70 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"
71 |
72 |
73 |
74 |
75 |
76 |
77 | param(
78 | [xml] $Document
79 | );
80 |
81 | foreach( $file in $Document.unattend.Extensions.File ) {
82 | $path = [System.Environment]::ExpandEnvironmentVariables( $file.GetAttribute( 'path' ) );
83 | mkdir -Path( $path | Split-Path -Parent ) -ErrorAction 'SilentlyContinue';
84 | $encoding = switch( [System.IO.Path]::GetExtension( $path ) ) {
85 | { $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; }
86 | { $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); }
87 | default { [System.Text.Encoding]::Default; }
88 | };
89 | $bytes = $encoding.GetPreamble() + $encoding.GetBytes( $file.InnerText.Trim() );
90 | [System.IO.File]::WriteAllBytes( $path, $bytes );
91 | }
92 |
93 |
94 | $selectors = @(
95 | 'Microsoft.Microsoft3DViewer';
96 | 'Microsoft.BingSearch';
97 | 'Clipchamp.Clipchamp';
98 | 'Microsoft.Windows.DevHome';
99 | 'MicrosoftCorporationII.MicrosoftFamily';
100 | 'Microsoft.WindowsFeedbackHub';
101 | 'Microsoft.GetHelp';
102 | 'Microsoft.Getstarted';
103 | 'microsoft.windowscommunicationsapps';
104 | 'Microsoft.MixedReality.Portal';
105 | 'Microsoft.BingNews';
106 | 'Microsoft.MicrosoftOfficeHub';
107 | 'Microsoft.OutlookForWindows';
108 | 'Microsoft.People';
109 | 'Microsoft.PowerAutomateDesktop';
110 | 'MicrosoftCorporationII.QuickAssist';
111 | 'Microsoft.SkypeApp';
112 | 'Microsoft.MicrosoftSolitaireCollection';
113 | 'MicrosoftTeams';
114 | 'MSTeams';
115 | 'Microsoft.Todos';
116 | 'Microsoft.WindowsSoundRecorder';
117 | 'Microsoft.Wallet';
118 | 'Microsoft.BingWeather';
119 | 'Microsoft.Xbox.TCUI';
120 | 'Microsoft.XboxApp';
121 | 'Microsoft.XboxGameOverlay';
122 | 'Microsoft.XboxGamingOverlay';
123 | 'Microsoft.XboxIdentityProvider';
124 | 'Microsoft.XboxSpeechToTextOverlay';
125 | 'Microsoft.GamingApp';
126 | );
127 | $getCommand = {
128 | Get-AppxProvisionedPackage -Online;
129 | };
130 | $filterCommand = {
131 | $_.DisplayName -eq $selector;
132 | };
133 | $removeCommand = {
134 | [CmdletBinding()]
135 | param(
136 | [Parameter( Mandatory, ValueFromPipeline )]
137 | $InputObject
138 | );
139 | process {
140 | $InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue';
141 | }
142 | };
143 | $type = 'Package';
144 | $logfile = 'C:\Windows\Setup\Scripts\RemovePackages.log';
145 | & {
146 | $installed = & $getCommand;
147 | foreach( $selector in $selectors ) {
148 | $result = [ordered] @{
149 | Selector = $selector;
150 | };
151 | $found = $installed | Where-Object -FilterScript $filterCommand;
152 | if( $found ) {
153 | $result.Output = $found | & $removeCommand;
154 | if( $? ) {
155 | $result.Message = "$type removed.";
156 | } else {
157 | $result.Message = "$type not removed.";
158 | $result.Error = $Error[0];
159 | }
160 | } else {
161 | $result.Message = "$type not installed.";
162 | }
163 | $result | ConvertTo-Json -Depth 3 -Compress;
164 | }
165 | } *>&1 >> $logfile;
166 |
167 |
168 | $selectors = @(
169 | 'Print.Fax.Scan';
170 | 'MathRecognizer';
171 | 'OneCoreUAP.OneSync';
172 | 'App.Support.QuickAssist';
173 | 'Hello.Face.18967';
174 | 'Hello.Face.Migration.18967';
175 | 'Hello.Face.20134';
176 | );
177 | $getCommand = {
178 | Get-WindowsCapability -Online | Where-Object -Property 'State' -NotIn -Value @(
179 | 'NotPresent';
180 | 'Removed';
181 | );
182 | };
183 | $filterCommand = {
184 | ($_.Name -split '~')[0] -eq $selector;
185 | };
186 | $removeCommand = {
187 | [CmdletBinding()]
188 | param(
189 | [Parameter( Mandatory, ValueFromPipeline )]
190 | $InputObject
191 | );
192 | process {
193 | $InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue';
194 | }
195 | };
196 | $type = 'Capability';
197 | $logfile = 'C:\Windows\Setup\Scripts\RemoveCapabilities.log';
198 | & {
199 | $installed = & $getCommand;
200 | foreach( $selector in $selectors ) {
201 | $result = [ordered] @{
202 | Selector = $selector;
203 | };
204 | $found = $installed | Where-Object -FilterScript $filterCommand;
205 | if( $found ) {
206 | $result.Output = $found | & $removeCommand;
207 | if( $? ) {
208 | $result.Message = "$type removed.";
209 | } else {
210 | $result.Message = "$type not removed.";
211 | $result.Error = $Error[0];
212 | }
213 | } else {
214 | $result.Message = "$type not installed.";
215 | }
216 | $result | ConvertTo-Json -Depth 3 -Compress;
217 | }
218 | } *>&1 >> $logfile;
219 |
220 |
221 | $selectors = @(
222 | 'MediaPlayback';
223 | );
224 | $getCommand = {
225 | Get-WindowsOptionalFeature -Online | Where-Object -Property 'State' -NotIn -Value @(
226 | 'Disabled';
227 | 'DisabledWithPayloadRemoved';
228 | );
229 | };
230 | $filterCommand = {
231 | $_.FeatureName -eq $selector;
232 | };
233 | $removeCommand = {
234 | [CmdletBinding()]
235 | param(
236 | [Parameter( Mandatory, ValueFromPipeline )]
237 | $InputObject
238 | );
239 | process {
240 | $InputObject | Disable-WindowsOptionalFeature -Online -Remove -NoRestart -ErrorAction 'Continue';
241 | }
242 | };
243 | $type = 'Feature';
244 | $logfile = 'C:\Windows\Setup\Scripts\RemoveFeatures.log';
245 | & {
246 | $installed = & $getCommand;
247 | foreach( $selector in $selectors ) {
248 | $result = [ordered] @{
249 | Selector = $selector;
250 | };
251 | $found = $installed | Where-Object -FilterScript $filterCommand;
252 | if( $found ) {
253 | $result.Output = $found | & $removeCommand;
254 | if( $? ) {
255 | $result.Message = "$type removed.";
256 | } else {
257 | $result.Message = "$type not removed.";
258 | $result.Error = $Error[0];
259 | }
260 | } else {
261 | $result.Message = "$type not installed.";
262 | }
263 | $result | ConvertTo-Json -Depth 3 -Compress;
264 | }
265 | } *>&1 >> $logfile;
266 |
267 |
268 | $json = '{"pinnedList":[]}';
269 | if( [System.Environment]::OSVersion.Version.Build -lt 20000 ) {
270 | return;
271 | }
272 | $key = 'Registry::HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start';
273 | New-Item -Path $key -ItemType 'Directory' -ErrorAction 'SilentlyContinue';
274 | Set-ItemProperty -LiteralPath $key -Name 'ConfigureStartPins' -Value $json -Type 'String';
275 |
276 |
277 | if exist A:\ET-Optimizer.exe A:\ET-Optimizer.exe /sillent
278 | if exist B:\ET-Optimizer.exe B:\ET-Optimizer.exe /sillent
279 | if exist C:\ET-Optimizer.exe C:\ET-Optimizer.exe /sillent
280 | if exist D:\ET-Optimizer.exe D:\ET-Optimizer.exe /sillent
281 | if exist E:\ET-Optimizer.exe E:\ET-Optimizer.exe /sillent
282 | if exist F:\ET-Optimizer.exe F:\ET-Optimizer.exe /sillent
283 | if exist G:\ET-Optimizer.exe G:\ET-Optimizer.exe /sillent
284 | if exist H:\ET-Optimizer.exe H:\ET-Optimizer.exe /sillent
285 | if exist I:\ET-Optimizer.exe I:\ET-Optimizer.exe /sillent
286 | if exist J:\ET-Optimizer.exe J:\ET-Optimizer.exe /sillent
287 | if exist K:\ET-Optimizer.exe K:\ET-Optimizer.exe /sillent
288 | if exist L:\ET-Optimizer.exe L:\ET-Optimizer.exe /sillent
289 | if exist M:\ET-Optimizer.exe M:\ET-Optimizer.exe /sillent
290 | if exist N:\ET-Optimizer.exe N:\ET-Optimizer.exe /sillent
291 | if exist X:\ET-Optimizer.exe X:\ET-Optimizer.exe /sillent
292 | if exist Z:\ET-Optimizer.exe Z:\ET-Optimizer.exe /sillent
293 | if exist Y:\ET-Optimizer.exe Y:\ET-Optimizer.exe /sillent
294 | if exist ET-Optimizer.exe ET-Optimizer.exe /sillent
295 | if exist A:\ET.exe A:\ET.exe /sillent
296 | if exist B:\ET.exe B:\ET.exe /sillent
297 | if exist C:\ET.exe C:\ET.exe /sillent
298 | if exist D:\ET.exe D:\ET.exe /sillent
299 | if exist E:\ET.exe E:\ET.exe /sillent
300 | if exist F:\ET.exe F:\ET.exe /sillent
301 | if exist G:\ET.exe G:\ET.exe /sillent
302 | if exist H:\ET.exe H:\ET.exe /sillent
303 | if exist I:\ET.exe I:\ET.exe /sillent
304 | if exist J:\ET.exe J:\ET.exe /sillent
305 | if exist K:\ET.exe K:\ET.exe /sillent
306 | if exist L:\ET.exe L:\ET.exe /sillent
307 | if exist M:\ET.exe M:\ET.exe /sillent
308 | if exist N:\ET.exe N:\ET.exe /sillent
309 | if exist X:\ET.exe X:\ET.exe /sillent
310 | if exist Z:\ET.exe Z:\ET.exe /sillent
311 | if exist Y:\ET.exe Y:\ET.exe /sillent
312 | if exist ET.exe ET.exe /sillent
313 |
314 |
315 | $scripts = @(
316 | {
317 | reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f;
318 | };
319 | {
320 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f;
321 | };
322 | {
323 | start ms-cxh:localonly
324 | };
325 | {
326 | Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate' -Force -ErrorAction 'SilentlyContinue';
327 | };
328 | {
329 | Remove-Item -LiteralPath 'C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk', 'C:\Windows\System32\OneDriveSetup.exe', 'C:\Windows\SysWOW64\OneDriveSetup.exe' -ErrorAction 'Continue';
330 | };
331 | {
332 | Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate' -Force -ErrorAction 'SilentlyContinue';
333 | };
334 | {
335 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f;
336 | };
337 | {
338 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemovePackages.ps1' -Raw | Invoke-Expression;
339 | };
340 | {
341 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveCapabilities.ps1' -Raw | Invoke-Expression;
342 | };
343 | {
344 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveFeatures.ps1' -Raw | Invoke-Expression;
345 | };
346 | {
347 | net.exe accounts /maxpwage:UNLIMITED;
348 | };
349 | {
350 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v SmartScreenEnabled /t REG_SZ /d "Off" /f;
351 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WTDS\Components" /v NotifyPasswordReuse /t REG_DWORD /d 0 /f;
352 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WTDS\Components" /v NotifyUnsafeApp /t REG_DWORD /d 0 /f;
353 | };
354 | {
355 | reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
356 | };
357 | {
358 | Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force;
359 | };
360 | {
361 | fsutil.exe behavior set disableLastAccess 1;
362 | };
363 | {
364 | reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f;
365 | };
366 | {
367 | reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f;
368 | };
369 | {
370 | reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f;
371 | };
372 | {
373 | reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v HideFirstRunExperience /t REG_DWORD /d 1 /f;
374 | };
375 | {
376 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetStartPins.ps1' -Raw | Invoke-Expression;
377 | };
378 | {
379 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ControlAnimations" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
380 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\AnimateMinMax" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
381 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TaskbarAnimations" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
382 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMAeroPeekEnabled" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
383 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\MenuAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
384 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TooltipAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
385 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\SelectionFade" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
386 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMSaveThumbnailEnabled" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
387 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\CursorShadow" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
388 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewShadow" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
389 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ThumbnailsOrIcon" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
390 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewAlphaSelect" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
391 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DragFullWindows" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
392 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ComboBoxAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
393 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\FontSmoothing" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
394 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListBoxSmoothScrolling" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
395 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DropShadow" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
396 | };
397 | {
398 | C:\Windows\Setup\Scripts\unattend-01.cmd;
399 | };
400 | );
401 |
402 | & {
403 | [float] $complete = 0;
404 | [float] $increment = 100 / $scripts.Count;
405 | foreach( $script in $scripts ) {
406 | Write-Progress -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete;
407 | & $script;
408 | $complete += $increment;
409 | }
410 | } *>&1 >> "C:\Windows\Setup\Scripts\Specialize.log";
411 |
412 |
413 | $scripts = @(
414 | {
415 | Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage;
416 | };
417 | {
418 | Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Search' -Name 'SearchboxTaskbarMode' -Type 'DWord' -Value 1;
419 | };
420 | {
421 | Set-ItemProperty -LiteralPath 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name 'VisualFXSetting' -Type 'DWord' -Value 3 -Force;
422 | };
423 | );
424 |
425 | & {
426 | [float] $complete = 0;
427 | [float] $increment = 100 / $scripts.Count;
428 | foreach( $script in $scripts ) {
429 | Write-Progress -Activity 'Running scripts to configure this user account. Do not close this window.' -PercentComplete $complete;
430 | & $script;
431 | $complete += $increment;
432 | }
433 | } *>&1 >> "$env:TEMP\UserOnce.log";
434 |
435 |
436 | $scripts = @(
437 | {
438 | reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f;
439 | };
440 | {
441 | Remove-ItemProperty -LiteralPath 'Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'OneDriveSetup' -Force -ErrorAction 'Continue';
442 | };
443 | {
444 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\GameDVR" /v AppCaptureEnabled /t REG_DWORD /d 0 /f;
445 | };
446 | {
447 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Edge\SmartScreenEnabled" /ve /t REG_DWORD /d 0 /f;
448 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Edge\SmartScreenPuaEnabled" /ve /t REG_DWORD /d 0 /f;
449 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\AppHost" /v EnableWebContentEvaluation /t REG_DWORD /d 0 /f;
450 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\AppHost" /v PreventOverride /t REG_DWORD /d 0 /f;
451 | };
452 | {
453 | $names = @(
454 | 'ContentDeliveryAllowed';
455 | 'FeatureManagementEnabled';
456 | 'OEMPreInstalledAppsEnabled';
457 | 'PreInstalledAppsEnabled';
458 | 'PreInstalledAppsEverEnabled';
459 | 'SilentInstalledAppsEnabled';
460 | 'SoftLandingEnabled';
461 | 'SubscribedContentEnabled';
462 | 'SubscribedContent-310093Enabled';
463 | 'SubscribedContent-338387Enabled';
464 | 'SubscribedContent-338388Enabled';
465 | 'SubscribedContent-338389Enabled';
466 | 'SubscribedContent-338393Enabled';
467 | 'SubscribedContent-353698Enabled';
468 | 'SystemPaneSuggestionsEnabled';
469 | );
470 |
471 | foreach( $name in $names ) {
472 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v $name /t REG_DWORD /d 0 /f;
473 | }
474 | };
475 | {
476 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "UnattendedSetup" /t REG_SZ /d "powershell.exe -WindowStyle Hidden -NoProfile -Command \""Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\UserOnce.ps1' -Raw | Invoke-Expression;\""" /f;
477 | };
478 | );
479 |
480 | & {
481 | [float] $complete = 0;
482 | [float] $increment = 100 / $scripts.Count;
483 | foreach( $script in $scripts ) {
484 | Write-Progress -Activity 'Running scripts to modify the default user’’s registry hive. Do not close this window.' -PercentComplete $complete;
485 | & $script;
486 | $complete += $increment;
487 | }
488 | } *>&1 >> "C:\Windows\Setup\Scripts\DefaultUser.log";
489 |
490 |
491 | $scripts = @(
492 | {
493 | cmd.exe /c "rmdir C:\Windows.old";
494 | cmd.exe /c "start C:\Windows\Resources\Themes\dark.theme"
495 | };
496 | {
497 | C:\Windows\Setup\Scripts\unattend-01.cmd;
498 | };
499 | );
500 |
501 | & {
502 | [float] $complete = 0;
503 | [float] $increment = 100 / $scripts.Count;
504 | foreach( $script in $scripts ) {
505 | Write-Progress -Activity 'Running scripts to finalize your Windows installation. Do not close this window.' -PercentComplete $complete;
506 | & $script;
507 | $complete += $increment;
508 | }
509 | } *>&1 >> "C:\Windows\Setup\Scripts\FirstLogon.log";
510 |
511 |
512 |
513 |
--------------------------------------------------------------------------------
/ET/Resources/battery-charge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/Resources/battery-charge.png
--------------------------------------------------------------------------------
/ET/Resources/cpu-tower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/Resources/cpu-tower.png
--------------------------------------------------------------------------------
/ET/Resources/ram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/Resources/ram.png
--------------------------------------------------------------------------------
/ET/app.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/app.ico
--------------------------------------------------------------------------------
/ET/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
50 |
58 |
59 |
73 |
--------------------------------------------------------------------------------
/ET/bin/Debug/Copy_To_ISO/ET-Optimizer.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/Copy_To_ISO/ET-Optimizer.exe
--------------------------------------------------------------------------------
/ET/bin/Debug/Copy_To_ISO/HowTo-ISO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/Copy_To_ISO/HowTo-ISO.png
--------------------------------------------------------------------------------
/ET/bin/Debug/Copy_To_ISO/autounattend.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 00000-00000-00000-00000-00000
9 | Always
10 |
11 | true
12 |
13 | false
14 |
15 |
16 | 1
17 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
18 |
19 |
20 | 2
21 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
22 |
23 |
24 | 3
25 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 1
36 | powershell.exe -WindowStyle Hidden -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"
37 |
38 |
39 | 2
40 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\Specialize.ps1' -Raw | Invoke-Expression;"
41 |
42 |
43 | 3
44 | reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"
45 |
46 |
47 | 4
48 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\DefaultUser.ps1' -Raw | Invoke-Expression;"
49 |
50 |
51 | 5
52 | reg.exe unload "HKU\DefaultUser"
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | 3
63 | true
64 | false
65 | true
66 |
67 |
68 |
69 | 1
70 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"
71 |
72 |
73 |
74 |
75 |
76 |
77 | param(
78 | [xml] $Document
79 | );
80 |
81 | foreach( $file in $Document.unattend.Extensions.File ) {
82 | $path = [System.Environment]::ExpandEnvironmentVariables( $file.GetAttribute( 'path' ) );
83 | mkdir -Path( $path | Split-Path -Parent ) -ErrorAction 'SilentlyContinue';
84 | $encoding = switch( [System.IO.Path]::GetExtension( $path ) ) {
85 | { $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; }
86 | { $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); }
87 | default { [System.Text.Encoding]::Default; }
88 | };
89 | $bytes = $encoding.GetPreamble() + $encoding.GetBytes( $file.InnerText.Trim() );
90 | [System.IO.File]::WriteAllBytes( $path, $bytes );
91 | }
92 |
93 |
94 | $selectors = @(
95 | 'Microsoft.Microsoft3DViewer';
96 | 'Microsoft.BingSearch';
97 | 'Clipchamp.Clipchamp';
98 | 'Microsoft.Windows.DevHome';
99 | 'MicrosoftCorporationII.MicrosoftFamily';
100 | 'Microsoft.WindowsFeedbackHub';
101 | 'Microsoft.GetHelp';
102 | 'Microsoft.Getstarted';
103 | 'microsoft.windowscommunicationsapps';
104 | 'Microsoft.MixedReality.Portal';
105 | 'Microsoft.BingNews';
106 | 'Microsoft.MicrosoftOfficeHub';
107 | 'Microsoft.OutlookForWindows';
108 | 'Microsoft.People';
109 | 'Microsoft.PowerAutomateDesktop';
110 | 'MicrosoftCorporationII.QuickAssist';
111 | 'Microsoft.SkypeApp';
112 | 'Microsoft.MicrosoftSolitaireCollection';
113 | 'MicrosoftTeams';
114 | 'MSTeams';
115 | 'Microsoft.Todos';
116 | 'Microsoft.WindowsSoundRecorder';
117 | 'Microsoft.Wallet';
118 | 'Microsoft.BingWeather';
119 | 'Microsoft.Xbox.TCUI';
120 | 'Microsoft.XboxApp';
121 | 'Microsoft.XboxGameOverlay';
122 | 'Microsoft.XboxGamingOverlay';
123 | 'Microsoft.XboxIdentityProvider';
124 | 'Microsoft.XboxSpeechToTextOverlay';
125 | 'Microsoft.GamingApp';
126 | );
127 | $getCommand = {
128 | Get-AppxProvisionedPackage -Online;
129 | };
130 | $filterCommand = {
131 | $_.DisplayName -eq $selector;
132 | };
133 | $removeCommand = {
134 | [CmdletBinding()]
135 | param(
136 | [Parameter( Mandatory, ValueFromPipeline )]
137 | $InputObject
138 | );
139 | process {
140 | $InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue';
141 | }
142 | };
143 | $type = 'Package';
144 | $logfile = 'C:\Windows\Setup\Scripts\RemovePackages.log';
145 | & {
146 | $installed = & $getCommand;
147 | foreach( $selector in $selectors ) {
148 | $result = [ordered] @{
149 | Selector = $selector;
150 | };
151 | $found = $installed | Where-Object -FilterScript $filterCommand;
152 | if( $found ) {
153 | $result.Output = $found | & $removeCommand;
154 | if( $? ) {
155 | $result.Message = "$type removed.";
156 | } else {
157 | $result.Message = "$type not removed.";
158 | $result.Error = $Error[0];
159 | }
160 | } else {
161 | $result.Message = "$type not installed.";
162 | }
163 | $result | ConvertTo-Json -Depth 3 -Compress;
164 | }
165 | } *>&1 >> $logfile;
166 |
167 |
168 | $selectors = @(
169 | 'Print.Fax.Scan';
170 | 'MathRecognizer';
171 | 'OneCoreUAP.OneSync';
172 | 'App.Support.QuickAssist';
173 | 'Hello.Face.18967';
174 | 'Hello.Face.Migration.18967';
175 | 'Hello.Face.20134';
176 | );
177 | $getCommand = {
178 | Get-WindowsCapability -Online | Where-Object -Property 'State' -NotIn -Value @(
179 | 'NotPresent';
180 | 'Removed';
181 | );
182 | };
183 | $filterCommand = {
184 | ($_.Name -split '~')[0] -eq $selector;
185 | };
186 | $removeCommand = {
187 | [CmdletBinding()]
188 | param(
189 | [Parameter( Mandatory, ValueFromPipeline )]
190 | $InputObject
191 | );
192 | process {
193 | $InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue';
194 | }
195 | };
196 | $type = 'Capability';
197 | $logfile = 'C:\Windows\Setup\Scripts\RemoveCapabilities.log';
198 | & {
199 | $installed = & $getCommand;
200 | foreach( $selector in $selectors ) {
201 | $result = [ordered] @{
202 | Selector = $selector;
203 | };
204 | $found = $installed | Where-Object -FilterScript $filterCommand;
205 | if( $found ) {
206 | $result.Output = $found | & $removeCommand;
207 | if( $? ) {
208 | $result.Message = "$type removed.";
209 | } else {
210 | $result.Message = "$type not removed.";
211 | $result.Error = $Error[0];
212 | }
213 | } else {
214 | $result.Message = "$type not installed.";
215 | }
216 | $result | ConvertTo-Json -Depth 3 -Compress;
217 | }
218 | } *>&1 >> $logfile;
219 |
220 |
221 | $selectors = @(
222 | 'MediaPlayback';
223 | );
224 | $getCommand = {
225 | Get-WindowsOptionalFeature -Online | Where-Object -Property 'State' -NotIn -Value @(
226 | 'Disabled';
227 | 'DisabledWithPayloadRemoved';
228 | );
229 | };
230 | $filterCommand = {
231 | $_.FeatureName -eq $selector;
232 | };
233 | $removeCommand = {
234 | [CmdletBinding()]
235 | param(
236 | [Parameter( Mandatory, ValueFromPipeline )]
237 | $InputObject
238 | );
239 | process {
240 | $InputObject | Disable-WindowsOptionalFeature -Online -Remove -NoRestart -ErrorAction 'Continue';
241 | }
242 | };
243 | $type = 'Feature';
244 | $logfile = 'C:\Windows\Setup\Scripts\RemoveFeatures.log';
245 | & {
246 | $installed = & $getCommand;
247 | foreach( $selector in $selectors ) {
248 | $result = [ordered] @{
249 | Selector = $selector;
250 | };
251 | $found = $installed | Where-Object -FilterScript $filterCommand;
252 | if( $found ) {
253 | $result.Output = $found | & $removeCommand;
254 | if( $? ) {
255 | $result.Message = "$type removed.";
256 | } else {
257 | $result.Message = "$type not removed.";
258 | $result.Error = $Error[0];
259 | }
260 | } else {
261 | $result.Message = "$type not installed.";
262 | }
263 | $result | ConvertTo-Json -Depth 3 -Compress;
264 | }
265 | } *>&1 >> $logfile;
266 |
267 |
268 | $json = '{"pinnedList":[]}';
269 | if( [System.Environment]::OSVersion.Version.Build -lt 20000 ) {
270 | return;
271 | }
272 | $key = 'Registry::HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start';
273 | New-Item -Path $key -ItemType 'Directory' -ErrorAction 'SilentlyContinue';
274 | Set-ItemProperty -LiteralPath $key -Name 'ConfigureStartPins' -Value $json -Type 'String';
275 |
276 |
277 | if exist A:\ET-Optimizer.exe A:\ET-Optimizer.exe /sillent
278 | if exist B:\ET-Optimizer.exe B:\ET-Optimizer.exe /sillent
279 | if exist C:\ET-Optimizer.exe C:\ET-Optimizer.exe /sillent
280 | if exist D:\ET-Optimizer.exe D:\ET-Optimizer.exe /sillent
281 | if exist E:\ET-Optimizer.exe E:\ET-Optimizer.exe /sillent
282 | if exist F:\ET-Optimizer.exe F:\ET-Optimizer.exe /sillent
283 | if exist G:\ET-Optimizer.exe G:\ET-Optimizer.exe /sillent
284 | if exist H:\ET-Optimizer.exe H:\ET-Optimizer.exe /sillent
285 | if exist I:\ET-Optimizer.exe I:\ET-Optimizer.exe /sillent
286 | if exist J:\ET-Optimizer.exe J:\ET-Optimizer.exe /sillent
287 | if exist K:\ET-Optimizer.exe K:\ET-Optimizer.exe /sillent
288 | if exist L:\ET-Optimizer.exe L:\ET-Optimizer.exe /sillent
289 | if exist M:\ET-Optimizer.exe M:\ET-Optimizer.exe /sillent
290 | if exist N:\ET-Optimizer.exe N:\ET-Optimizer.exe /sillent
291 | if exist X:\ET-Optimizer.exe X:\ET-Optimizer.exe /sillent
292 | if exist Z:\ET-Optimizer.exe Z:\ET-Optimizer.exe /sillent
293 | if exist Y:\ET-Optimizer.exe Y:\ET-Optimizer.exe /sillent
294 | if exist ET-Optimizer.exe ET-Optimizer.exe /sillent
295 | if exist A:\ET.exe A:\ET.exe /sillent
296 | if exist B:\ET.exe B:\ET.exe /sillent
297 | if exist C:\ET.exe C:\ET.exe /sillent
298 | if exist D:\ET.exe D:\ET.exe /sillent
299 | if exist E:\ET.exe E:\ET.exe /sillent
300 | if exist F:\ET.exe F:\ET.exe /sillent
301 | if exist G:\ET.exe G:\ET.exe /sillent
302 | if exist H:\ET.exe H:\ET.exe /sillent
303 | if exist I:\ET.exe I:\ET.exe /sillent
304 | if exist J:\ET.exe J:\ET.exe /sillent
305 | if exist K:\ET.exe K:\ET.exe /sillent
306 | if exist L:\ET.exe L:\ET.exe /sillent
307 | if exist M:\ET.exe M:\ET.exe /sillent
308 | if exist N:\ET.exe N:\ET.exe /sillent
309 | if exist X:\ET.exe X:\ET.exe /sillent
310 | if exist Z:\ET.exe Z:\ET.exe /sillent
311 | if exist Y:\ET.exe Y:\ET.exe /sillent
312 | if exist ET.exe ET.exe /sillent
313 |
314 |
315 | $scripts = @(
316 | {
317 | reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f;
318 | };
319 | {
320 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f;
321 | };
322 | {
323 | start ms-cxh:localonly
324 | };
325 | {
326 | Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate' -Force -ErrorAction 'SilentlyContinue';
327 | };
328 | {
329 | Remove-Item -LiteralPath 'C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk', 'C:\Windows\System32\OneDriveSetup.exe', 'C:\Windows\SysWOW64\OneDriveSetup.exe' -ErrorAction 'Continue';
330 | };
331 | {
332 | Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate' -Force -ErrorAction 'SilentlyContinue';
333 | };
334 | {
335 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f;
336 | };
337 | {
338 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemovePackages.ps1' -Raw | Invoke-Expression;
339 | };
340 | {
341 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveCapabilities.ps1' -Raw | Invoke-Expression;
342 | };
343 | {
344 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveFeatures.ps1' -Raw | Invoke-Expression;
345 | };
346 | {
347 | net.exe accounts /maxpwage:UNLIMITED;
348 | };
349 | {
350 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v SmartScreenEnabled /t REG_SZ /d "Off" /f;
351 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WTDS\Components" /v NotifyPasswordReuse /t REG_DWORD /d 0 /f;
352 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WTDS\Components" /v NotifyUnsafeApp /t REG_DWORD /d 0 /f;
353 | };
354 | {
355 | reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
356 | };
357 | {
358 | Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force;
359 | };
360 | {
361 | fsutil.exe behavior set disableLastAccess 1;
362 | };
363 | {
364 | reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f;
365 | };
366 | {
367 | reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f;
368 | };
369 | {
370 | reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f;
371 | };
372 | {
373 | reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v HideFirstRunExperience /t REG_DWORD /d 1 /f;
374 | };
375 | {
376 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetStartPins.ps1' -Raw | Invoke-Expression;
377 | };
378 | {
379 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ControlAnimations" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
380 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\AnimateMinMax" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
381 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TaskbarAnimations" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
382 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMAeroPeekEnabled" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
383 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\MenuAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
384 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TooltipAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
385 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\SelectionFade" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
386 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMSaveThumbnailEnabled" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
387 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\CursorShadow" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
388 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewShadow" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
389 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ThumbnailsOrIcon" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
390 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewAlphaSelect" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
391 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DragFullWindows" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
392 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ComboBoxAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
393 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\FontSmoothing" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
394 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListBoxSmoothScrolling" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
395 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DropShadow" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
396 | };
397 | {
398 | C:\Windows\Setup\Scripts\unattend-01.cmd;
399 | };
400 | );
401 |
402 | & {
403 | [float] $complete = 0;
404 | [float] $increment = 100 / $scripts.Count;
405 | foreach( $script in $scripts ) {
406 | Write-Progress -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete;
407 | & $script;
408 | $complete += $increment;
409 | }
410 | } *>&1 >> "C:\Windows\Setup\Scripts\Specialize.log";
411 |
412 |
413 | $scripts = @(
414 | {
415 | Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage;
416 | };
417 | {
418 | Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Search' -Name 'SearchboxTaskbarMode' -Type 'DWord' -Value 1;
419 | };
420 | {
421 | Set-ItemProperty -LiteralPath 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name 'VisualFXSetting' -Type 'DWord' -Value 3 -Force;
422 | };
423 | );
424 |
425 | & {
426 | [float] $complete = 0;
427 | [float] $increment = 100 / $scripts.Count;
428 | foreach( $script in $scripts ) {
429 | Write-Progress -Activity 'Running scripts to configure this user account. Do not close this window.' -PercentComplete $complete;
430 | & $script;
431 | $complete += $increment;
432 | }
433 | } *>&1 >> "$env:TEMP\UserOnce.log";
434 |
435 |
436 | $scripts = @(
437 | {
438 | reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f;
439 | };
440 | {
441 | Remove-ItemProperty -LiteralPath 'Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'OneDriveSetup' -Force -ErrorAction 'Continue';
442 | };
443 | {
444 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\GameDVR" /v AppCaptureEnabled /t REG_DWORD /d 0 /f;
445 | };
446 | {
447 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Edge\SmartScreenEnabled" /ve /t REG_DWORD /d 0 /f;
448 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Edge\SmartScreenPuaEnabled" /ve /t REG_DWORD /d 0 /f;
449 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\AppHost" /v EnableWebContentEvaluation /t REG_DWORD /d 0 /f;
450 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\AppHost" /v PreventOverride /t REG_DWORD /d 0 /f;
451 | };
452 | {
453 | $names = @(
454 | 'ContentDeliveryAllowed';
455 | 'FeatureManagementEnabled';
456 | 'OEMPreInstalledAppsEnabled';
457 | 'PreInstalledAppsEnabled';
458 | 'PreInstalledAppsEverEnabled';
459 | 'SilentInstalledAppsEnabled';
460 | 'SoftLandingEnabled';
461 | 'SubscribedContentEnabled';
462 | 'SubscribedContent-310093Enabled';
463 | 'SubscribedContent-338387Enabled';
464 | 'SubscribedContent-338388Enabled';
465 | 'SubscribedContent-338389Enabled';
466 | 'SubscribedContent-338393Enabled';
467 | 'SubscribedContent-353698Enabled';
468 | 'SystemPaneSuggestionsEnabled';
469 | );
470 |
471 | foreach( $name in $names ) {
472 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v $name /t REG_DWORD /d 0 /f;
473 | }
474 | };
475 | {
476 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "UnattendedSetup" /t REG_SZ /d "powershell.exe -WindowStyle Hidden -NoProfile -Command \""Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\UserOnce.ps1' -Raw | Invoke-Expression;\""" /f;
477 | };
478 | );
479 |
480 | & {
481 | [float] $complete = 0;
482 | [float] $increment = 100 / $scripts.Count;
483 | foreach( $script in $scripts ) {
484 | Write-Progress -Activity 'Running scripts to modify the default user’’s registry hive. Do not close this window.' -PercentComplete $complete;
485 | & $script;
486 | $complete += $increment;
487 | }
488 | } *>&1 >> "C:\Windows\Setup\Scripts\DefaultUser.log";
489 |
490 |
491 | $scripts = @(
492 | {
493 | cmd.exe /c "rmdir C:\Windows.old";
494 | cmd.exe /c "start C:\Windows\Resources\Themes\dark.theme"
495 | };
496 | {
497 | C:\Windows\Setup\Scripts\unattend-01.cmd;
498 | };
499 | );
500 |
501 | & {
502 | [float] $complete = 0;
503 | [float] $increment = 100 / $scripts.Count;
504 | foreach( $script in $scripts ) {
505 | Write-Progress -Activity 'Running scripts to finalize your Windows installation. Do not close this window.' -PercentComplete $complete;
506 | & $script;
507 | $complete += $increment;
508 | }
509 | } *>&1 >> "C:\Windows\Setup\Scripts\FirstLogon.log";
510 |
511 |
512 |
513 |
--------------------------------------------------------------------------------
/ET/bin/Debug/ET.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/ET.exe
--------------------------------------------------------------------------------
/ET/bin/Debug/ET.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ET/bin/Debug/ET.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/ET.pdb
--------------------------------------------------------------------------------
/ET/bin/Debug/Microsoft.Bcl.AsyncInterfaces.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/Microsoft.Bcl.AsyncInterfaces.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/Microsoft.Win32.TaskScheduler.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/Microsoft.Win32.TaskScheduler.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Buffers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Buffers.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Buffers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | System.Buffers
4 |
5 |
6 |
7 | Provides a resource pool that enables reusing instances of type .
8 | The type of the objects that are in the resource pool.
9 |
10 |
11 | Initializes a new instance of the class.
12 |
13 |
14 | Creates a new instance of the class.
15 | A new instance of the class.
16 |
17 |
18 | Creates a new instance of the class using the specifed configuration.
19 | The maximum length of an array instance that may be stored in the pool.
20 | The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.
21 | A new instance of the class with the specified configuration.
22 |
23 |
24 | Retrieves a buffer that is at least the requested length.
25 | The minimum length of the array.
26 | An array of type that is at least minimumLength in length.
27 |
28 |
29 | Returns an array to the pool that was previously obtained using the method on the same instance.
30 | A buffer to return to the pool that was previously obtained using the method.
31 | Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array's contents are left unchanged.
32 |
33 |
34 | Gets a shared instance.
35 | A shared instance.
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ET/bin/Debug/System.IO.Pipelines.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.IO.Pipelines.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Memory.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Memory.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Memory.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | System.Memory
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 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Numerics.Vectors.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Numerics.Vectors.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | System.Runtime.CompilerServices.Unsafe
5 |
6 |
7 |
8 | Contains generic, low-level functionality for manipulating pointers.
9 |
10 |
11 | Adds an element offset to the given reference.
12 | The reference to add the offset to.
13 | The offset to add.
14 | The type of reference.
15 | A new reference that reflects the addition of offset to pointer.
16 |
17 |
18 | Adds an element offset to the given reference.
19 | The reference to add the offset to.
20 | The offset to add.
21 | The type of reference.
22 | A new reference that reflects the addition of offset to pointer.
23 |
24 |
25 | Adds an element offset to the given reference.
26 | The reference to add the offset to.
27 | The offset to add.
28 | The type of reference.
29 | A new reference that reflects the addition of offset to pointer.
30 |
31 |
32 | Adds an element offset to the given void pointer.
33 | The void pointer to add the offset to.
34 | The offset to add.
35 | The type of void pointer.
36 | A new void pointer that reflects the addition of offset to the specified pointer.
37 |
38 |
39 | Adds a byte offset to the given reference.
40 | The reference to add the offset to.
41 | The offset to add.
42 | The type of reference.
43 | A new reference that reflects the addition of byte offset to pointer.
44 |
45 |
46 | Adds a byte offset to the given reference.
47 | The reference to add the offset to.
48 | The offset to add.
49 | The type of reference.
50 | A new reference that reflects the addition of byte offset to pointer.
51 |
52 |
53 | Determines whether the specified references point to the same location.
54 | The first reference to compare.
55 | The second reference to compare.
56 | The type of reference.
57 |
58 | if and point to the same location; otherwise, .
59 |
60 |
61 | Casts the given object to the specified type.
62 | The object to cast.
63 | The type which the object will be cast to.
64 | The original object, casted to the given type.
65 |
66 |
67 | Reinterprets the given reference as a reference to a value of type .
68 | The reference to reinterpret.
69 | The type of reference to reinterpret.
70 | The desired type of the reference.
71 | A reference to a value of type .
72 |
73 |
74 | Returns a pointer to the given by-ref parameter.
75 | The object whose pointer is obtained.
76 | The type of object.
77 | A pointer to the given value.
78 |
79 |
80 | Reinterprets the given read-only reference as a reference.
81 | The read-only reference to reinterpret.
82 | The type of reference.
83 | A reference to a value of type .
84 |
85 |
86 | Reinterprets the given location as a reference to a value of type .
87 | The location of the value to reference.
88 | The type of the interpreted location.
89 | A reference to a value of type .
90 |
91 |
92 | Determines the byte offset from origin to target from the given references.
93 | The reference to origin.
94 | The reference to target.
95 | The type of reference.
96 | Byte offset from origin to target i.e. - .
97 |
98 |
99 | Copies a value of type to the given location.
100 | The location to copy to.
101 | A pointer to the value to copy.
102 | The type of value to copy.
103 |
104 |
105 | Copies a value of type to the given location.
106 | The location to copy to.
107 | A reference to the value to copy.
108 | The type of value to copy.
109 |
110 |
111 | Copies bytes from the source address to the destination address.
112 | The destination address to copy to.
113 | The source address to copy from.
114 | The number of bytes to copy.
115 |
116 |
117 | Copies bytes from the source address to the destination address.
118 | The destination address to copy to.
119 | The source address to copy from.
120 | The number of bytes to copy.
121 |
122 |
123 | Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.
124 | The destination address to copy to.
125 | The source address to copy from.
126 | The number of bytes to copy.
127 |
128 |
129 | Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.
130 | The destination address to copy to.
131 | The source address to copy from.
132 | The number of bytes to copy.
133 |
134 |
135 | Initializes a block of memory at the given location with a given initial value.
136 | The address of the start of the memory block to initialize.
137 | The value to initialize the block to.
138 | The number of bytes to initialize.
139 |
140 |
141 | Initializes a block of memory at the given location with a given initial value.
142 | The address of the start of the memory block to initialize.
143 | The value to initialize the block to.
144 | The number of bytes to initialize.
145 |
146 |
147 | Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.
148 | The address of the start of the memory block to initialize.
149 | The value to initialize the block to.
150 | The number of bytes to initialize.
151 |
152 |
153 | Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.
154 | The address of the start of the memory block to initialize.
155 | The value to initialize the block to.
156 | The number of bytes to initialize.
157 |
158 |
159 | Returns a value that indicates whether a specified reference is greater than another specified reference.
160 | The first value to compare.
161 | The second value to compare.
162 | The type of the reference.
163 |
164 | if is greater than ; otherwise, .
165 |
166 |
167 | Returns a value that indicates whether a specified reference is less than another specified reference.
168 | The first value to compare.
169 | The second value to compare.
170 | The type of the reference.
171 |
172 | if is less than ; otherwise, .
173 |
174 |
175 | Determines if a given reference to a value of type is a null reference.
176 | The reference to check.
177 | The type of the reference.
178 |
179 | if is a null reference; otherwise, .
180 |
181 |
182 | Returns a reference to a value of type that is a null reference.
183 | The type of the reference.
184 | A reference to a value of type that is a null reference.
185 |
186 |
187 | Reads a value of type from the given location.
188 | The location to read from.
189 | The type to read.
190 | An object of type read from the given location.
191 |
192 |
193 | Reads a value of type from the given location without assuming architecture dependent alignment of the addresses.
194 | The location to read from.
195 | The type to read.
196 | An object of type read from the given location.
197 |
198 |
199 | Reads a value of type from the given location without assuming architecture dependent alignment of the addresses.
200 | The location to read from.
201 | The type to read.
202 | An object of type read from the given location.
203 |
204 |
205 | Returns the size of an object of the given type parameter.
206 | The type of object whose size is retrieved.
207 | The size of an object of type .
208 |
209 |
210 | Bypasses definite assignment rules for a given value.
211 | The uninitialized object.
212 | The type of the uninitialized object.
213 |
214 |
215 | Subtracts an element offset from the given reference.
216 | The reference to subtract the offset from.
217 | The offset to subtract.
218 | The type of reference.
219 | A new reference that reflects the subtraction of offset from pointer.
220 |
221 |
222 | Subtracts an element offset from the given reference.
223 | The reference to subtract the offset from.
224 | The offset to subtract.
225 | The type of reference.
226 | A new reference that reflects the subtraction of offset from pointer.
227 |
228 |
229 | Subtracts an element offset from the given reference.
230 | The reference to subtract the offset from.
231 | The offset to subtract.
232 | The type of reference.
233 | A new reference that reflects the subraction of offset from pointer.
234 |
235 |
236 | Subtracts an element offset from the given void pointer.
237 | The void pointer to subtract the offset from.
238 | The offset to subtract.
239 | The type of the void pointer.
240 | A new void pointer that reflects the subtraction of offset from the specified pointer.
241 |
242 |
243 | Subtracts a byte offset from the given reference.
244 | The reference to subtract the offset from.
245 | The offset to subtract.
246 | The type of reference.
247 | A new reference that reflects the subtraction of byte offset from pointer.
248 |
249 |
250 | Subtracts a byte offset from the given reference.
251 | The reference to subtract the offset from.
252 | The offset to subtract.
253 | The type of reference.
254 | A new reference that reflects the subraction of byte offset from pointer.
255 |
256 |
257 | Returns a to a boxed value.
258 | The value to unbox.
259 | The type to be unboxed.
260 |
261 | is , and is a non-nullable value type.
262 |
263 | is not a boxed value type.
264 |
265 | -or-
266 |
267 | is not a boxed .
268 |
269 | cannot be found.
270 | A to the boxed value .
271 |
272 |
273 | Writes a value of type to the given location.
274 | The location to write to.
275 | The value to write.
276 | The type of value to write.
277 |
278 |
279 | Writes a value of type to the given location without assuming architecture dependent alignment of the addresses.
280 | The location to write to.
281 | The value to write.
282 | The type of value to write.
283 |
284 |
285 | Writes a value of type to the given location without assuming architecture dependent alignment of the addresses.
286 | The location to write to.
287 | The value to write.
288 | The type of value to write.
289 |
290 |
291 |
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Security.AccessControl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Security.AccessControl.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Security.Permissions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Security.Permissions.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Security.Principal.Windows.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Security.Principal.Windows.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Text.Encodings.Web.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Text.Encodings.Web.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Text.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Text.Json.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Threading.Tasks.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.Threading.Tasks.Extensions.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.Threading.Tasks.Extensions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | System.Threading.Tasks.Extensions
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Provides a value type that wraps a and a TResult, only one of which is used.
23 | The result.
24 |
25 |
26 | Initializes a new instance of the class using the supplied task that represents the operation.
27 | The task.
28 | The task argument is null.
29 |
30 |
31 | Initializes a new instance of the class using the supplied result of a successful operation.
32 | The result.
33 |
34 |
35 | Retrieves a object that represents this .
36 | The object that is wrapped in this if one exists, or a new object that represents the result.
37 |
38 |
39 | Configures an awaiter for this value.
40 | true to attempt to marshal the continuation back to the captured context; otherwise, false.
41 | The configured awaiter.
42 |
43 |
44 | Creates a method builder for use with an async method.
45 | The created builder.
46 |
47 |
48 | Determines whether the specified object is equal to the current object.
49 | The object to compare with the current object.
50 | true if the specified object is equal to the current object; otherwise, false.
51 |
52 |
53 | Determines whether the specified object is equal to the current object.
54 | The object to compare with the current object.
55 | true if the specified object is equal to the current object; otherwise, false.
56 |
57 |
58 | Creates an awaiter for this value.
59 | The awaiter.
60 |
61 |
62 | Returns the hash code for this instance.
63 | The hash code for the current object.
64 |
65 |
66 | Gets a value that indicates whether this object represents a canceled operation.
67 | true if this object represents a canceled operation; otherwise, false.
68 |
69 |
70 | Gets a value that indicates whether this object represents a completed operation.
71 | true if this object represents a completed operation; otherwise, false.
72 |
73 |
74 | Gets a value that indicates whether this object represents a successfully completed operation.
75 | true if this object represents a successfully completed operation; otherwise, false.
76 |
77 |
78 | Gets a value that indicates whether this object represents a failed operation.
79 | true if this object represents a failed operation; otherwise, false.
80 |
81 |
82 | Compares two values for equality.
83 | The first value to compare.
84 | The second value to compare.
85 | true if the two values are equal; otherwise, false.
86 |
87 |
88 | Determines whether two values are unequal.
89 | The first value to compare.
90 | The seconed value to compare.
91 | true if the two values are not equal; otherwise, false.
92 |
93 |
94 | Gets the result.
95 | The result.
96 |
97 |
98 | Returns a string that represents the current object.
99 | A string that represents the current object.
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 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
--------------------------------------------------------------------------------
/ET/bin/Debug/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/System.ValueTuple.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/System.ValueTuple.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | System.ValueTuple
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ET/bin/Debug/app.publish/ET.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/app.publish/ET.exe
--------------------------------------------------------------------------------
/ET/bin/Debug/bcdstate.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/bcdstate.txt
--------------------------------------------------------------------------------
/ET/bin/Debug/de/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/de/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/es/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/es/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/fr/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/fr/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/it/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/it/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/ja/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/ja/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/pl/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/pl/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/ru/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/ru/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/sv/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/sv/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/tr/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/tr/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/bin/Debug/zh-Hant/Microsoft.Win32.TaskScheduler.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/bin/Debug/zh-Hant/Microsoft.Win32.TaskScheduler.resources.dll
--------------------------------------------------------------------------------
/ET/obj/Debug/DesignTimeResolveAssemblyReferences.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/DesignTimeResolveAssemblyReferences.cache
--------------------------------------------------------------------------------
/ET/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.Form1.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.Form1.resources
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.Properties.Resources.resources:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.Properties.Resources.resources
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.csproj.AssemblyReference.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.csproj.AssemblyReference.cache
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.csproj.CoreCompileInputs.cache:
--------------------------------------------------------------------------------
1 | 37b0b7528e4f913303c4fced6f03c14fa611dde73f0966da76c48efc2f59801b
2 |
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.csproj.GenerateResource.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.csproj.GenerateResource.cache
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.csproj.Up2Date:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.csproj.Up2Date
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.exe
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ET/obj/Debug/ET.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/ET.pdb
--------------------------------------------------------------------------------
/ET/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
--------------------------------------------------------------------------------
/ET/obj/Release/ET.csproj.AssemblyReference.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/ET/obj/Release/ET.csproj.AssemblyReference.cache
--------------------------------------------------------------------------------
/ET/obj/Release/ET.csproj.FileListAbsolute.txt:
--------------------------------------------------------------------------------
1 | C:\Users\Rikey\Desktop\ET-Optimizer-master\ET-Optimizer-master\ET\obj\Release\ET.csproj.AssemblyReference.cache
2 |
--------------------------------------------------------------------------------
/ET/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/HowTo-ISO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/semazurek/ET-Optimizer/9a2b031694c33376cd74d6d3b0001c4b54933f7d/HowTo-ISO.png
--------------------------------------------------------------------------------
/Make-ISO.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="Low")]
2 | Param
3 | (
4 | [parameter(Mandatory=$true,ValueFromPipeline=$false)]
5 | [string]$isoPath
6 | )
7 | #$isoPath = "pl-pl_windows_11_consumer_editions_version_24h2_updated_april_2025_x64_dvd_ea86301d.iso"
8 | $tempFolder = "$env:SystemDrive\iso_temp"
9 | $newFile = "Copy_To_ISO\ET-Optimizer.exe"
10 | $newFile2 = "Copy_To_ISO\autounattend.xml"
11 |
12 | cls
13 | [console]::WindowWidth = 120
14 | [console]::WindowHeight = 40
15 | $Host.UI.RawUI.BackgroundColor = 'Blue'
16 | $Host.UI.RawUI.ForegroundColor = 'White'
17 | $host.ui.RawUI.WindowTitle = "ET-Optimizer ISO Creator"
18 |
19 | # === Instalacja narzędzi z winget ===
20 | winget install --id=7zip.7zip -e --disable-interactivity --silent --accept-source-agreements --accept-package-agreements
21 | cls
22 |
23 | # === Ścieżki do programów ===
24 | $sevenZip = "${env:ProgramFiles}\7-Zip\7z.exe"
25 | if (-Not (Test-Path $sevenZip)) {
26 | $sevenZip = "${env:ProgramFiles(x86)}\7-Zip\7z.exe"
27 | }
28 |
29 | # === Wypakowanie ISO ===
30 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $tempFolder
31 | New-Item -ItemType Directory -Path $tempFolder | Out-Null
32 |
33 | & "$sevenZip" x "`"$isoPath`"" -o"$tempFolder" -y
34 |
35 | # === Dodaj nowy plik ===
36 | Copy-Item -Path $newFile -Destination $tempFolder -Force
37 | Copy-Item -Path $newFile2 -Destination $tempFolder -Force
38 |
39 | cls
40 | function New-ISOFile {
41 | <#
42 | .SYNOPSIS
43 | Create an ISO file from a source folder.
44 |
45 | .DESCRIPTION
46 | Create an ISO file from a source folder.
47 | Optionally speicify a boot image and media type.
48 |
49 | Based on original function by Chris Wu.
50 | https://gallery.technet.microsoft.com/scriptcenter/New-ISOFile-function-a8deeffd (link appears to be no longer valid.)
51 |
52 | Changes:
53 | - Updated to work with PowerShell 7
54 | - Added a bit more error handling and verbose output.
55 | - Features removed to simplify code:
56 | * Clipboard support.
57 | * Pipeline input.
58 |
59 | .PARAMETER source
60 | The source folder to add to the ISO.
61 |
62 | .PARAMETER destinationIso
63 | The ISO file to create.
64 |
65 | .PARAMETER bootFile
66 | Optional. Boot file to add to the ISO.
67 |
68 | .PARAMETER media
69 | Optional. The media type of the resulting ISO (BDR, CDR etc). Defaults to DVDPLUSRW_DUALLAYER.
70 |
71 | .PARAMETER title
72 | Optional. Title of the ISO file. Defaults to "untitled".
73 |
74 | .PARAMETER force
75 | Optional. Force overwrite of an existing ISO file.
76 |
77 | .INPUTS
78 | None.
79 |
80 | .OUTPUTS
81 | None.
82 |
83 | .EXAMPLE
84 | New-ISOFile -source c:\forIso\ -destinationIso C:\ISOs\testiso.iso
85 |
86 | Simple example. Create testiso.iso with the contents from c:\forIso
87 |
88 | .EXAMPLE
89 | New-ISOFile -source f:\ -destinationIso C:\ISOs\windowsServer2019Custom.iso -bootFile F:\efi\microsoft\boot\efisys.bin -title "Windows2019"
90 |
91 | Example building Windows media. Add the contents of f:\ to windowsServer2019Custom.iso. Use efisys.bin to make the disc bootable.
92 |
93 | .LINK
94 |
95 | .NOTES
96 | 01 Alistair McNair Initial version.
97 |
98 | #>
99 | [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="Low")]
100 | Param
101 | (
102 | [parameter(Mandatory=$true,ValueFromPipeline=$false)]
103 | [string]$source,
104 | [parameter(Mandatory=$true,ValueFromPipeline=$false)]
105 | [string]$destinationIso,
106 | [parameter(Mandatory=$false,ValueFromPipeline=$false)]
107 | [string]$bootFile = $null,
108 | [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
109 | [ValidateSet("CDR","CDRW","DVDRAM","DVDPLUSR","DVDPLUSRW","DVDPLUSR_DUALLAYER","DVDDASHR","DVDDASHRW","DVDDASHR_DUALLAYER","DISK","DVDPLUSRW_DUALLAYER","BDR","BDRE")]
110 | [string]$media = "DVDPLUSRW_DUALLAYER",
111 | [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
112 | [string]$title = "untitled",
113 | [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
114 | [switch]$force
115 | )
116 |
117 | begin {
118 |
119 | Write-Verbose ("Function start.")
120 |
121 | } # begin
122 |
123 | process {
124 |
125 | Write-Verbose ("Processing nested system " + $vmName)
126 |
127 | ## Set type definition
128 | Write-Verbose ("Adding ISOFile type.")
129 |
130 | $typeDefinition = @'
131 | public class ISOFile {
132 | public unsafe static void Create(string Path, object Stream, int BlockSize, int TotalBlocks) {
133 | int bytes = 0;
134 | byte[] buf = new byte[BlockSize];
135 | var ptr = (System.IntPtr)(&bytes);
136 | var o = System.IO.File.OpenWrite(Path);
137 | var i = Stream as System.Runtime.InteropServices.ComTypes.IStream;
138 |
139 | if (o != null) {
140 | while (TotalBlocks-- > 0) {
141 | i.Read(buf, BlockSize, ptr); o.Write(buf, 0, bytes);
142 | }
143 |
144 | o.Flush(); o.Close();
145 | }
146 | }
147 | }
148 | '@
149 |
150 | ## Create type ISOFile, if not already created. Different actions depending on PowerShell version
151 | if (!('ISOFile' -as [type])) {
152 |
153 | ## Add-Type works a little differently depending on PowerShell version.
154 | ## https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/add-type
155 | switch ($PSVersionTable.PSVersion.Major) {
156 |
157 | ## 7 and (hopefully) later versions
158 | {$_ -ge 7} {
159 | Write-Verbose ("Adding type for PowerShell 7 or later.")
160 | Add-Type -CompilerOptions "/unsafe" -TypeDefinition $typeDefinition
161 | } # PowerShell 7
162 |
163 | ## 5, and only 5. We aren't interested in previous versions.
164 | 5 {
165 | Write-Verbose ("Adding type for PowerShell 5.")
166 | $compOpts = New-Object System.CodeDom.Compiler.CompilerParameters
167 | $compOpts.CompilerOptions = "/unsafe"
168 |
169 | Add-Type -CompilerParameters $compOpts -TypeDefinition $typeDefinition
170 | } # PowerShell 5
171 |
172 | default {
173 | ## If it's not 7 or later, and it's not 5, then we aren't doing it.
174 | throw ("Unsupported PowerShell version.")
175 |
176 | } # default
177 |
178 | } # switch
179 |
180 | } # if
181 |
182 |
183 | ## Add boot file to image
184 | if ($bootFile) {
185 |
186 | Write-Verbose ("Optional boot file " + $bootFile + " has been specified.")
187 |
188 | ## Display warning if Blu Ray media is used with a boot file.
189 | ## Not sure why this doesn't work.
190 | if(@('BDR','BDRE') -contains $media) {
191 | Write-Warning ("Selected boot image may not work with BDR/BDRE media types.")
192 | } # if
193 |
194 | if (!(Test-Path -Path $bootFile)) {
195 | throw ($bootFile + " is not valid.")
196 | } # if
197 |
198 | ## Set stream type to binary and load in boot file
199 | Write-Verbose ("Loading boot file.")
200 |
201 | try {
202 | $stream = New-Object -ComObject ADODB.Stream -Property @{Type=1} -ErrorAction Stop
203 | $stream.Open()
204 | $stream.LoadFromFile((Get-Item -LiteralPath $bootFile).Fullname)
205 |
206 | Write-Verbose ("Boot file loaded.")
207 | } # try
208 | catch {
209 | throw ("Failed to open boot file. " + $_.exception.message)
210 | } # catch
211 |
212 |
213 | ## Apply the boot image
214 | Write-Verbose ("Applying boot image.")
215 |
216 | try {
217 | $boot = New-Object -ComObject IMAPI2FS.BootOptions -ErrorAction Stop
218 | $boot.AssignBootImage($stream)
219 |
220 | Write-Verbose ("Boot image applied.")
221 | } # try
222 | catch {
223 | throw ("Failed to apply boot file. " + $_.exception.message)
224 | } # catch
225 |
226 |
227 | Write-Verbose ("Boot file applied.")
228 |
229 | } # if
230 |
231 | ## Build array of media types
232 | $mediaType = @(
233 | "UNKNOWN",
234 | "CDROM",
235 | "CDR",
236 | "CDRW",
237 | "DVDROM",
238 | "DVDRAM",
239 | "DVDPLUSR",
240 | "DVDPLUSRW",
241 | "DVDPLUSR_DUALLAYER",
242 | "DVDDASHR",
243 | "DVDDASHRW",
244 | "DVDDASHR_DUALLAYER",
245 | "DISK",
246 | "DVDPLUSRW_DUALLAYER",
247 | "HDDVDROM",
248 | "HDDVDR",
249 | "HDDVDRAM",
250 | "BDROM",
251 | "BDR",
252 | "BDRE"
253 | )
254 |
255 | Write-Verbose ("Selected media type is " + $media + " with value " + $mediaType.IndexOf($media))
256 |
257 | ## Initialise image
258 | Write-Verbose ("Initialising image object.")
259 | try {
260 | $image = New-Object -ComObject IMAPI2FS.MsftFileSystemImage -Property @{VolumeName=$title} -ErrorAction Stop
261 | $image.ChooseImageDefaultsForMediaType($mediaType.IndexOf($media))
262 |
263 | Write-Verbose ("initialised.")
264 | } # try
265 | catch {
266 | throw ("Failed to initialise image. " + $_.exception.Message)
267 | } # catch
268 |
269 |
270 | ## Create target ISO, throw if file exists and -force parameter is not used.
271 | if ($PSCmdlet.ShouldProcess($destinationIso)) {
272 |
273 | if (!($targetFile = New-Item -Path $destinationIso -ItemType File -Force:$Force -ErrorAction SilentlyContinue)) {
274 | throw ("Cannot create file " + $destinationIso + ". Use -Force parameter to overwrite if the target file already exists.")
275 | } # if
276 |
277 | } # if
278 |
279 |
280 | ## Get source content from specified path
281 | Write-Verbose ("Fetching items from source directory.")
282 | try {
283 | $sourceItems = Get-ChildItem -LiteralPath $source -ErrorAction Stop
284 | Write-Verbose ("Got source items.")
285 | } # try
286 | catch {
287 | throw ("Failed to get source items. " + $_.exception.message)
288 | } # catch
289 |
290 |
291 | ## Add these to our image
292 | Write-Verbose ("Adding items to image.")
293 |
294 | $totalItems = $sourceItems.Count
295 | $currentItem = 0
296 |
297 | foreach($sourceItem in $sourceItems) {
298 | $currentItem++
299 | $percent = [math]::Round(($currentItem / $totalItems) * 100)
300 |
301 | Write-Progress -Activity "Creating ISO" `
302 | -Status "Adding $($sourceItem.Name) ($currentItem z $totalItems)" `
303 | -PercentComplete $percent
304 |
305 | try {
306 | $image.Root.AddTree($sourceItem.FullName, $true)
307 | } # try
308 | catch {
309 | throw ("Failed to add " + $sourceItem.fullname + ". " + $_.exception.message)
310 | } # catch
311 | }
312 |
313 | ## Add boot file, if specified
314 | if ($boot) {
315 | Write-Verbose ("Adding boot image.")
316 | $Image.BootImageOptions = $boot
317 | }
318 |
319 | ## Write out ISO file
320 | Write-Verbose ("Writing out ISO file to " + $targetFile)
321 |
322 | try {
323 | $result = $image.CreateResultImage()
324 | [ISOFile]::Create($targetFile.FullName,$result.ImageStream,$result.BlockSize,$result.TotalBlocks)
325 | } # try
326 | catch {
327 | throw ("Failed to write ISO file. " + $_.exception.Message)
328 | } # catch
329 |
330 | Write-Verbose ("File complete.")
331 |
332 | ## Return file details
333 | return $targetFile
334 |
335 | } # process
336 |
337 | end {
338 | Remove-Item -Path $tempFolder -Recurse -Force -ErrorAction SilentlyContinue
339 | cls
340 | Write-Verbose ("Done.")
341 | } # end
342 |
343 | } # function
344 |
345 | New-ISOFile -source $tempFolder -destinationIso Copy_To_ISO\ET-OS.iso -bootfile $tempFolder\efi\microsoft\boot\efisys_noprompt.bin -title "ET-OS" -Verbose
346 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | ET Optimizer
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | Optimize performance, improve privacy, and remove bloatware with 1 click.
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | Application developed from many sources found on the Internet, tested and updated. ET-Optimizer uses: built-in windows tools, contains 356 registry values and 136 calls to the system shell like cmd.
25 |
26 | Originally ET was a batch script file then evolved into a .bat file with vbs and powershell implemented, then was rewritten entirely to powershell, and over the years became a mostly fully-fledged C# application.
27 |
28 | The first version appeared in a simple version for personal use in 2021.
29 | So far the project has grown to: 5000+ lines of code, 900+ commits, translated into 8 languages and is being developed further with love ❤️
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | > [!WARNING]
45 | > Antiviruses may falsely detect as a threat.
46 | > It's recommended to make a own extra backup. I am not responsible for any damage caused.
47 |
48 |
49 |
50 |
51 |
52 | ## 📷 Screenshots
53 |
54 | First Look
55 |
56 |
57 |
58 | During Operation
59 |
60 |
61 |
62 | Extras
63 |
64 |
65 |
66 | ## 🛠 What it does
67 |
68 |
69 | 🔧 Performance Tweaks
70 |
71 |
72 | - Disable Edge WebWidget – removes the unnecessary Edge browser widget.
73 |
74 | - Set Power Plan to Ultimate Performance – configures Windows to favor maximum performance.
75 |
76 | - Lower svchost split threshold – optimizes how system services are handled.
77 |
78 | - Dual boot timeout: 3 seconds – speeds up boot time in multi-OS setups.
79 |
80 | - Disable Hibernation and Fast Startup – frees up disk space and may fix sleep issues.
81 |
82 | - Disable Windows Insider Experiments – ensures system stability by avoiding test features.
83 |
84 | - Disable App Launch Tracking – increases privacy and slightly boosts performance.
85 |
86 | - Disable PowerThrottling (Intel 6th gen+) – gives apps full CPU access.
87 |
88 | - Turn Off Background Apps – reduces CPU and RAM usage.
89 |
90 | - Disable Sticky Keys Prompt – avoids annoying popup messages.
91 |
92 | - Disable Activity History – stops Windows from tracking user activity.
93 |
94 | - Disable Updates for Microsoft Store Apps – reduces system background activity.
95 |
96 | - Disable SmartScreen for Apps – speeds up app launches and reduces interruptions.
97 |
98 | - Allow Websites to Provide Local Content – improves browser speed and relevance.
99 |
100 | - Fix Microsoft Edge Settings – resets and restores default Edge settings.
101 |
102 | - Disable Location Sensors – saves battery and enhances privacy.
103 |
104 | - Disable Auto-Sharing WiFi Hotspot – prevents unwanted network sharing.
105 |
106 | - Disable Shared HotSpot Connections – stops auto-joining shared hotspots.
107 |
108 | - Updates Notify for Scheduled Restart – prevents sudden reboots.
109 |
110 | - Set P2P Updates to LAN Only – reduces external bandwidth usage.
111 |
112 | - Set Lower Shutdown Time (2 seconds) – speeds up shutdown process.
113 |
114 | - Remove Old Device Drivers – frees up space and avoids conflicts.
115 |
116 | - Disable “Get Even More Out of Windows” prompt – removes nagging suggestions.
117 |
118 | - Disable Installing Suggested Apps – keeps your Start menu clean.
119 |
120 | - Disable Start Menu Ads/Suggestions – cleaner and faster Start experience.
121 |
122 | - Disable Suggested Apps in Windows Ink Workspace.
123 |
124 | - Disable Unnecessary Windows Components – lightens the system.
125 |
126 | - Defender Scheduled Scan Nerf – limits its system impact.
127 |
128 | - Defragment Indexing Service File – speeds up Windows Search.
129 |
130 | - Disable Nagle’s Algorithm (Delayed ACKs) – improves network latency.
131 |
132 | - CPU/GPU Priority Tweaks – ensures smoother performance.
133 |
134 | - Enable Service Tweaks – optimizes how system services are run.
135 |
136 | - Remove Preinstalled Bloatware – clears space and removes distractions.
137 |
138 | - Disable Unnecessary Startup Apps – boosts system boot speed.
139 |
140 | - Enable Long System Paths – supports deeper folder structures.
141 |
142 | - Disable Fullscreen Optimizations + Enable RAM Tweaks – improves game and system responsiveness.
143 |
144 |
145 |
146 | 🔐 Privacy
147 |
148 | - Disable Telemetry Scheduled Tasks – prevents Windows from auto-collecting background data.
149 |
150 | - Remove Telemetry/Data Collection Components – strips out system parts responsible for tracking.
151 |
152 | - Disable PowerShell Telemetry – stops Microsoft from logging script usage.
153 |
154 | - Disable Skype Telemetry – removes built-in tracking within Skype.
155 |
156 | - Disable Media Player Usage Reports – stops sending data on how media is played.
157 |
158 | - Disable Mozilla Telemetry – blocks Firefox from reporting user behavior.
159 |
160 | - Disable Apps from Using My Advertising ID – limits ad personalization and tracking.
161 |
162 | - Disable Sending Info About Writing (typing) – prevents data collection related to typing.
163 |
164 | - Disable Handwriting Recognition – improves privacy for stylus users.
165 |
166 | - Disable Watson Malware Reports – prevents sending malware incident reports.
167 |
168 | - Disable Malware Diagnostic Data Collection – blocks background logging of threats.
169 |
170 | - Disable Reporting to Microsoft MAPS – avoids participation in MS malware alert network.
171 |
172 | - Disable Spynet Defender Reporting – stops Defender from reporting to Microsoft cloud.
173 |
174 | - Do Not Send Malware Samples Automatically – full control over what’s submitted.
175 |
176 | - Disable Sending Typing Samples – more privacy for physical and on-screen keyboard use.
177 |
178 | - Disable Sending Contacts to Microsoft – keeps your contacts offline and private.
179 |
180 | - Disable Cortana – disables Microsoft’s digital assistant.
181 |
182 | - Remove Copilot – removes the AI-powered assistant introduced in newer Windows builds.
183 |
184 |
185 |
186 | 🎨 Visual Tweaks
187 |
188 | - Show File Extensions in File Explorer – improves clarity when working with files.
189 |
190 | - Disable Transparency on Taskbar – speeds up UI and improves battery life.
191 |
192 | - Disable Windows Animations – makes UI snappier and faster.
193 |
194 | - Disable MRU Lists (Jump Lists) – keeps the Start menu and taskbar tidy.
195 |
196 | - Set Search Box to Icon Only – minimizes visual clutter.
197 |
198 | - Open File Explorer to This PC – skips “Quick Access” and goes directly to drives.
199 |
200 | - Remove “Learn about this photo” Feature – cleaner photo viewer interface.
201 |
202 | - Enable Old Context Menu – restores classic right-click menu (Windows 11 style fix).
203 |
204 |
205 |
206 | 📦 Other
207 |
208 | - Remove Game Bar / Xbox DVR – eliminates background game-related services.
209 |
210 | - Clean Temp, Cache, Prefetch, Logs – frees up disk space and improves speed.
211 |
212 | - Scan for Adware (AdwCleaner) – detects and removes potentially unwanted software.
213 |
214 | - Clean WinSxS Folder – reduces size of the Windows component store.
215 |
216 | - Remove News & Interests / Widgets – removes taskbar widgets in Windows 10/11.
217 |
218 | - Tweak Unnecessary Services Behavior – disables or adjusts unused system services.
219 |
220 |
221 |
222 | ⚙️ Expert Mode
223 |
224 | - Disable Spectre/Meltdown Mitigations – improves performance at the cost of security.
225 |
226 | - Disable Windows Defender – removes built-in antivirus completely.
227 |
228 | - Disable Xbox Services – shuts down Xbox-related background processes.
229 |
230 | - Remove OneDrive – fully uninstalls Microsoft's cloud sync tool.
231 |
232 | - Enable Fast/Secure DNS (1.1.1.1) – improves DNS speed and privacy using Cloudflare.
233 |
234 | - Disable Process Mitigations – lifts certain OS-level security limits for advanced tweaks.
235 |
236 |
237 |
238 | *The application has a function to restore to the previous settings.
*
239 |
240 | ## 👏 Community Shares
241 |
242 | https://programyzadarmo.net.pl/threads/et-optimizer.52612/
243 |
244 | https://www.majorgeeks.com/files/details/et_all_in_one_optimization_script.html
245 |
246 | https://filecr.com/windows/semazurek-et-optimizer/
247 |
248 | https://en.taiwebs.com/windows/download-et-optimizer-9574.html
249 |
250 | https://www.essential-freebies.de/board/viewtopic.php?t=19662
251 |
252 | https://www.softpedia.com/get/Tweak/System-Tweak/ET-All-in-One-Optimization-Script.shtml
253 |
254 | https://scloud.ws/blog/optimization/5370.html
255 |
256 | https://rsload.net/soft/optimization/39444-et-optimizer.html
257 |
258 | https://www.yasdl.com/tag/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-et-optimizer
259 |
260 | https://www.youtube.com/watch?v=vIzWJ7OjgXA
261 |
262 | https://www.youtube.com/watch?v=BM_AirabkB8
263 |
264 | https://www.youtube.com/watch?v=FFKeJuXC4HA
265 |
266 | https://www.youtube.com/watch?v=G048P3g8bGM
267 |
268 |
--------------------------------------------------------------------------------
/autounattend.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 00000-00000-00000-00000-00000
9 | Always
10 |
11 | true
12 |
13 | false
14 |
15 |
16 | 1
17 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
18 |
19 |
20 | 2
21 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
22 |
23 |
24 | 3
25 | reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | 1
36 | powershell.exe -WindowStyle Hidden -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"
37 |
38 |
39 | 2
40 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\Specialize.ps1' -Raw | Invoke-Expression;"
41 |
42 |
43 | 3
44 | reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"
45 |
46 |
47 | 4
48 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\DefaultUser.ps1' -Raw | Invoke-Expression;"
49 |
50 |
51 | 5
52 | reg.exe unload "HKU\DefaultUser"
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | 3
63 | true
64 | false
65 | true
66 |
67 |
68 |
69 | 1
70 | powershell.exe -WindowStyle Hidden -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\FirstLogon.ps1' -Raw | Invoke-Expression;"
71 |
72 |
73 |
74 |
75 |
76 |
77 | param(
78 | [xml] $Document
79 | );
80 |
81 | foreach( $file in $Document.unattend.Extensions.File ) {
82 | $path = [System.Environment]::ExpandEnvironmentVariables( $file.GetAttribute( 'path' ) );
83 | mkdir -Path( $path | Split-Path -Parent ) -ErrorAction 'SilentlyContinue';
84 | $encoding = switch( [System.IO.Path]::GetExtension( $path ) ) {
85 | { $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; }
86 | { $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); }
87 | default { [System.Text.Encoding]::Default; }
88 | };
89 | $bytes = $encoding.GetPreamble() + $encoding.GetBytes( $file.InnerText.Trim() );
90 | [System.IO.File]::WriteAllBytes( $path, $bytes );
91 | }
92 |
93 |
94 | $selectors = @(
95 | 'Microsoft.Microsoft3DViewer';
96 | 'Microsoft.BingSearch';
97 | 'Clipchamp.Clipchamp';
98 | 'Microsoft.Windows.DevHome';
99 | 'MicrosoftCorporationII.MicrosoftFamily';
100 | 'Microsoft.WindowsFeedbackHub';
101 | 'Microsoft.GetHelp';
102 | 'Microsoft.Getstarted';
103 | 'microsoft.windowscommunicationsapps';
104 | 'Microsoft.MixedReality.Portal';
105 | 'Microsoft.BingNews';
106 | 'Microsoft.MicrosoftOfficeHub';
107 | 'Microsoft.OutlookForWindows';
108 | 'Microsoft.People';
109 | 'Microsoft.PowerAutomateDesktop';
110 | 'MicrosoftCorporationII.QuickAssist';
111 | 'Microsoft.SkypeApp';
112 | 'Microsoft.MicrosoftSolitaireCollection';
113 | 'MicrosoftTeams';
114 | 'MSTeams';
115 | 'Microsoft.Todos';
116 | 'Microsoft.WindowsSoundRecorder';
117 | 'Microsoft.Wallet';
118 | 'Microsoft.BingWeather';
119 | 'Microsoft.Xbox.TCUI';
120 | 'Microsoft.XboxApp';
121 | 'Microsoft.XboxGameOverlay';
122 | 'Microsoft.XboxGamingOverlay';
123 | 'Microsoft.XboxIdentityProvider';
124 | 'Microsoft.XboxSpeechToTextOverlay';
125 | 'Microsoft.GamingApp';
126 | );
127 | $getCommand = {
128 | Get-AppxProvisionedPackage -Online;
129 | };
130 | $filterCommand = {
131 | $_.DisplayName -eq $selector;
132 | };
133 | $removeCommand = {
134 | [CmdletBinding()]
135 | param(
136 | [Parameter( Mandatory, ValueFromPipeline )]
137 | $InputObject
138 | );
139 | process {
140 | $InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue';
141 | }
142 | };
143 | $type = 'Package';
144 | $logfile = 'C:\Windows\Setup\Scripts\RemovePackages.log';
145 | & {
146 | $installed = & $getCommand;
147 | foreach( $selector in $selectors ) {
148 | $result = [ordered] @{
149 | Selector = $selector;
150 | };
151 | $found = $installed | Where-Object -FilterScript $filterCommand;
152 | if( $found ) {
153 | $result.Output = $found | & $removeCommand;
154 | if( $? ) {
155 | $result.Message = "$type removed.";
156 | } else {
157 | $result.Message = "$type not removed.";
158 | $result.Error = $Error[0];
159 | }
160 | } else {
161 | $result.Message = "$type not installed.";
162 | }
163 | $result | ConvertTo-Json -Depth 3 -Compress;
164 | }
165 | } *>&1 >> $logfile;
166 |
167 |
168 | $selectors = @(
169 | 'Print.Fax.Scan';
170 | 'MathRecognizer';
171 | 'OneCoreUAP.OneSync';
172 | 'App.Support.QuickAssist';
173 | 'Hello.Face.18967';
174 | 'Hello.Face.Migration.18967';
175 | 'Hello.Face.20134';
176 | );
177 | $getCommand = {
178 | Get-WindowsCapability -Online | Where-Object -Property 'State' -NotIn -Value @(
179 | 'NotPresent';
180 | 'Removed';
181 | );
182 | };
183 | $filterCommand = {
184 | ($_.Name -split '~')[0] -eq $selector;
185 | };
186 | $removeCommand = {
187 | [CmdletBinding()]
188 | param(
189 | [Parameter( Mandatory, ValueFromPipeline )]
190 | $InputObject
191 | );
192 | process {
193 | $InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue';
194 | }
195 | };
196 | $type = 'Capability';
197 | $logfile = 'C:\Windows\Setup\Scripts\RemoveCapabilities.log';
198 | & {
199 | $installed = & $getCommand;
200 | foreach( $selector in $selectors ) {
201 | $result = [ordered] @{
202 | Selector = $selector;
203 | };
204 | $found = $installed | Where-Object -FilterScript $filterCommand;
205 | if( $found ) {
206 | $result.Output = $found | & $removeCommand;
207 | if( $? ) {
208 | $result.Message = "$type removed.";
209 | } else {
210 | $result.Message = "$type not removed.";
211 | $result.Error = $Error[0];
212 | }
213 | } else {
214 | $result.Message = "$type not installed.";
215 | }
216 | $result | ConvertTo-Json -Depth 3 -Compress;
217 | }
218 | } *>&1 >> $logfile;
219 |
220 |
221 | $selectors = @(
222 | 'MediaPlayback';
223 | );
224 | $getCommand = {
225 | Get-WindowsOptionalFeature -Online | Where-Object -Property 'State' -NotIn -Value @(
226 | 'Disabled';
227 | 'DisabledWithPayloadRemoved';
228 | );
229 | };
230 | $filterCommand = {
231 | $_.FeatureName -eq $selector;
232 | };
233 | $removeCommand = {
234 | [CmdletBinding()]
235 | param(
236 | [Parameter( Mandatory, ValueFromPipeline )]
237 | $InputObject
238 | );
239 | process {
240 | $InputObject | Disable-WindowsOptionalFeature -Online -Remove -NoRestart -ErrorAction 'Continue';
241 | }
242 | };
243 | $type = 'Feature';
244 | $logfile = 'C:\Windows\Setup\Scripts\RemoveFeatures.log';
245 | & {
246 | $installed = & $getCommand;
247 | foreach( $selector in $selectors ) {
248 | $result = [ordered] @{
249 | Selector = $selector;
250 | };
251 | $found = $installed | Where-Object -FilterScript $filterCommand;
252 | if( $found ) {
253 | $result.Output = $found | & $removeCommand;
254 | if( $? ) {
255 | $result.Message = "$type removed.";
256 | } else {
257 | $result.Message = "$type not removed.";
258 | $result.Error = $Error[0];
259 | }
260 | } else {
261 | $result.Message = "$type not installed.";
262 | }
263 | $result | ConvertTo-Json -Depth 3 -Compress;
264 | }
265 | } *>&1 >> $logfile;
266 |
267 |
268 | $json = '{"pinnedList":[]}';
269 | if( [System.Environment]::OSVersion.Version.Build -lt 20000 ) {
270 | return;
271 | }
272 | $key = 'Registry::HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start';
273 | New-Item -Path $key -ItemType 'Directory' -ErrorAction 'SilentlyContinue';
274 | Set-ItemProperty -LiteralPath $key -Name 'ConfigureStartPins' -Value $json -Type 'String';
275 |
276 |
277 | if exist A:\ET-Optimizer.exe A:\ET-Optimizer.exe /sillent
278 | if exist B:\ET-Optimizer.exe B:\ET-Optimizer.exe /sillent
279 | if exist C:\ET-Optimizer.exe C:\ET-Optimizer.exe /sillent
280 | if exist D:\ET-Optimizer.exe D:\ET-Optimizer.exe /sillent
281 | if exist E:\ET-Optimizer.exe E:\ET-Optimizer.exe /sillent
282 | if exist F:\ET-Optimizer.exe F:\ET-Optimizer.exe /sillent
283 | if exist G:\ET-Optimizer.exe G:\ET-Optimizer.exe /sillent
284 | if exist H:\ET-Optimizer.exe H:\ET-Optimizer.exe /sillent
285 | if exist I:\ET-Optimizer.exe I:\ET-Optimizer.exe /sillent
286 | if exist J:\ET-Optimizer.exe J:\ET-Optimizer.exe /sillent
287 | if exist K:\ET-Optimizer.exe K:\ET-Optimizer.exe /sillent
288 | if exist L:\ET-Optimizer.exe L:\ET-Optimizer.exe /sillent
289 | if exist M:\ET-Optimizer.exe M:\ET-Optimizer.exe /sillent
290 | if exist N:\ET-Optimizer.exe N:\ET-Optimizer.exe /sillent
291 | if exist X:\ET-Optimizer.exe X:\ET-Optimizer.exe /sillent
292 | if exist Z:\ET-Optimizer.exe Z:\ET-Optimizer.exe /sillent
293 | if exist Y:\ET-Optimizer.exe Y:\ET-Optimizer.exe /sillent
294 | if exist ET-Optimizer.exe ET-Optimizer.exe /sillent
295 | if exist A:\ET.exe A:\ET.exe /sillent
296 | if exist B:\ET.exe B:\ET.exe /sillent
297 | if exist C:\ET.exe C:\ET.exe /sillent
298 | if exist D:\ET.exe D:\ET.exe /sillent
299 | if exist E:\ET.exe E:\ET.exe /sillent
300 | if exist F:\ET.exe F:\ET.exe /sillent
301 | if exist G:\ET.exe G:\ET.exe /sillent
302 | if exist H:\ET.exe H:\ET.exe /sillent
303 | if exist I:\ET.exe I:\ET.exe /sillent
304 | if exist J:\ET.exe J:\ET.exe /sillent
305 | if exist K:\ET.exe K:\ET.exe /sillent
306 | if exist L:\ET.exe L:\ET.exe /sillent
307 | if exist M:\ET.exe M:\ET.exe /sillent
308 | if exist N:\ET.exe N:\ET.exe /sillent
309 | if exist X:\ET.exe X:\ET.exe /sillent
310 | if exist Z:\ET.exe Z:\ET.exe /sillent
311 | if exist Y:\ET.exe Y:\ET.exe /sillent
312 | if exist ET.exe ET.exe /sillent
313 |
314 |
315 | $scripts = @(
316 | {
317 | reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f;
318 | };
319 | {
320 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f;
321 | };
322 | {
323 | start ms-cxh:localonly
324 | };
325 | {
326 | Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate' -Force -ErrorAction 'SilentlyContinue';
327 | };
328 | {
329 | Remove-Item -LiteralPath 'C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk', 'C:\Windows\System32\OneDriveSetup.exe', 'C:\Windows\SysWOW64\OneDriveSetup.exe' -ErrorAction 'Continue';
330 | };
331 | {
332 | Remove-Item -LiteralPath 'Registry::HKLM\Software\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate' -Force -ErrorAction 'SilentlyContinue';
333 | };
334 | {
335 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f;
336 | };
337 | {
338 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemovePackages.ps1' -Raw | Invoke-Expression;
339 | };
340 | {
341 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveCapabilities.ps1' -Raw | Invoke-Expression;
342 | };
343 | {
344 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\RemoveFeatures.ps1' -Raw | Invoke-Expression;
345 | };
346 | {
347 | net.exe accounts /maxpwage:UNLIMITED;
348 | };
349 | {
350 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v SmartScreenEnabled /t REG_SZ /d "Off" /f;
351 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WTDS\Components" /v NotifyPasswordReuse /t REG_DWORD /d 0 /f;
352 | reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WTDS\Components" /v NotifyUnsafeApp /t REG_DWORD /d 0 /f;
353 | };
354 | {
355 | reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
356 | };
357 | {
358 | Set-ExecutionPolicy -Scope 'LocalMachine' -ExecutionPolicy 'RemoteSigned' -Force;
359 | };
360 | {
361 | fsutil.exe behavior set disableLastAccess 1;
362 | };
363 | {
364 | reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f;
365 | };
366 | {
367 | reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f;
368 | };
369 | {
370 | reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f;
371 | };
372 | {
373 | reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v HideFirstRunExperience /t REG_DWORD /d 1 /f;
374 | };
375 | {
376 | Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\SetStartPins.ps1' -Raw | Invoke-Expression;
377 | };
378 | {
379 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ControlAnimations" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
380 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\AnimateMinMax" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
381 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TaskbarAnimations" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
382 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMAeroPeekEnabled" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
383 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\MenuAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
384 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\TooltipAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
385 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\SelectionFade" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
386 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DWMSaveThumbnailEnabled" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
387 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\CursorShadow" -Name 'DefaultValue' -Value 0 -Type 'DWord' -Force;
388 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewShadow" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
389 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ThumbnailsOrIcon" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
390 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListviewAlphaSelect" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
391 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DragFullWindows" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
392 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ComboBoxAnimation" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
393 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\FontSmoothing" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
394 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\ListBoxSmoothScrolling" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
395 | Set-ItemProperty -LiteralPath "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects\DropShadow" -Name 'DefaultValue' -Value 1 -Type 'DWord' -Force;
396 | };
397 | {
398 | C:\Windows\Setup\Scripts\unattend-01.cmd;
399 | };
400 | );
401 |
402 | & {
403 | [float] $complete = 0;
404 | [float] $increment = 100 / $scripts.Count;
405 | foreach( $script in $scripts ) {
406 | Write-Progress -Activity 'Running scripts to customize your Windows installation. Do not close this window.' -PercentComplete $complete;
407 | & $script;
408 | $complete += $increment;
409 | }
410 | } *>&1 >> "C:\Windows\Setup\Scripts\Specialize.log";
411 |
412 |
413 | $scripts = @(
414 | {
415 | Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage;
416 | };
417 | {
418 | Set-ItemProperty -LiteralPath 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Search' -Name 'SearchboxTaskbarMode' -Type 'DWord' -Value 1;
419 | };
420 | {
421 | Set-ItemProperty -LiteralPath 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects' -Name 'VisualFXSetting' -Type 'DWord' -Value 3 -Force;
422 | };
423 | );
424 |
425 | & {
426 | [float] $complete = 0;
427 | [float] $increment = 100 / $scripts.Count;
428 | foreach( $script in $scripts ) {
429 | Write-Progress -Activity 'Running scripts to configure this user account. Do not close this window.' -PercentComplete $complete;
430 | & $script;
431 | $complete += $increment;
432 | }
433 | } *>&1 >> "$env:TEMP\UserOnce.log";
434 |
435 |
436 | $scripts = @(
437 | {
438 | reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f;
439 | };
440 | {
441 | Remove-ItemProperty -LiteralPath 'Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'OneDriveSetup' -Force -ErrorAction 'Continue';
442 | };
443 | {
444 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\GameDVR" /v AppCaptureEnabled /t REG_DWORD /d 0 /f;
445 | };
446 | {
447 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Edge\SmartScreenEnabled" /ve /t REG_DWORD /d 0 /f;
448 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Edge\SmartScreenPuaEnabled" /ve /t REG_DWORD /d 0 /f;
449 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\AppHost" /v EnableWebContentEvaluation /t REG_DWORD /d 0 /f;
450 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\AppHost" /v PreventOverride /t REG_DWORD /d 0 /f;
451 | };
452 | {
453 | $names = @(
454 | 'ContentDeliveryAllowed';
455 | 'FeatureManagementEnabled';
456 | 'OEMPreInstalledAppsEnabled';
457 | 'PreInstalledAppsEnabled';
458 | 'PreInstalledAppsEverEnabled';
459 | 'SilentInstalledAppsEnabled';
460 | 'SoftLandingEnabled';
461 | 'SubscribedContentEnabled';
462 | 'SubscribedContent-310093Enabled';
463 | 'SubscribedContent-338387Enabled';
464 | 'SubscribedContent-338388Enabled';
465 | 'SubscribedContent-338389Enabled';
466 | 'SubscribedContent-338393Enabled';
467 | 'SubscribedContent-353698Enabled';
468 | 'SystemPaneSuggestionsEnabled';
469 | );
470 |
471 | foreach( $name in $names ) {
472 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v $name /t REG_DWORD /d 0 /f;
473 | }
474 | };
475 | {
476 | reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "UnattendedSetup" /t REG_SZ /d "powershell.exe -WindowStyle Hidden -NoProfile -Command \""Get-Content -LiteralPath 'C:\Windows\Setup\Scripts\UserOnce.ps1' -Raw | Invoke-Expression;\""" /f;
477 | };
478 | );
479 |
480 | & {
481 | [float] $complete = 0;
482 | [float] $increment = 100 / $scripts.Count;
483 | foreach( $script in $scripts ) {
484 | Write-Progress -Activity 'Running scripts to modify the default user’’s registry hive. Do not close this window.' -PercentComplete $complete;
485 | & $script;
486 | $complete += $increment;
487 | }
488 | } *>&1 >> "C:\Windows\Setup\Scripts\DefaultUser.log";
489 |
490 |
491 | $scripts = @(
492 | {
493 | cmd.exe /c "rmdir C:\Windows.old";
494 | cmd.exe /c "start C:\Windows\Resources\Themes\dark.theme"
495 | };
496 | {
497 | C:\Windows\Setup\Scripts\unattend-01.cmd;
498 | };
499 | );
500 |
501 | & {
502 | [float] $complete = 0;
503 | [float] $increment = 100 / $scripts.Count;
504 | foreach( $script in $scripts ) {
505 | Write-Progress -Activity 'Running scripts to finalize your Windows installation. Do not close this window.' -PercentComplete $complete;
506 | & $script;
507 | $complete += $increment;
508 | }
509 | } *>&1 >> "C:\Windows\Setup\Scripts\FirstLogon.log";
510 |
511 |
512 |
513 |
--------------------------------------------------------------------------------