diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..3c4efe20
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,261 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+#*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignoreable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
\ No newline at end of file
diff --git a/GUI.ps1 b/GUI.ps1
deleted file mode 100644
index 8b137891..00000000
--- a/GUI.ps1
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 321a8919..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2019 farag2
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index f3e34a43..00000000
--- a/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-## Contents
-- [Overview](#overview)
-- [Core features](#core-features)
-- [Screenshots](#screenshots)
-- [Usage](#usage)
-- [Supported Windows version](#supported-windows-version)
-- [FAQ](#faq)
-- [Links](#links)
-- [PS](#ps)
-
-## Overview
-This PowerShell script is for initial setup after fresh installation of Windows 10 and partially Windows Server 2016/2019. The script is a set of tweaks for fine-tuning the OS and automating the routine tasks.
-
-## Core features
-- Turn off diagnostics tracking services;
-- Turn off diagnostics tracking scheduled tasks;
-- Interactive prompts
- - [Screenshot](#screenshots)
-- Uninstall all UWP apps from all accounts with exception apps list;
-- Turn off Windows features;
-- Create scheduled task with the disk cleanup tool in Task Scheduler;
-- Create task to clean out the "$env:SystemRoot\SoftwareDistribution\Download" folder in Task Scheduler;
-- Create scheduled task with the $env:TEMP folder cleanup in Task Scheduler;
-- Add folder to exclude from Windows Defender Antivirus scan;
-- Turn off per-user services;
-- Create old style shortcut for "Devices and Printers";
-- Import Start menu layout from pre-saved reg file;
- - Download pre-saved Startmenu.reg
- - [Screenshot](#screenshots)
-- Unpin all Start menu tiles;
-- Set location of the "Desktop", "Documents" "Downloads" "Music", "Pictures", and "Videos";
-- Refresh desktop icons, environment variables and taskbar without restarting File Explorer;
-- Many more File Explorer and context menu "deep" tweaks.
-
-### Screenshots
-- Startmenu
-
- 
-
-- Interactive promts
-
- 
-
-## Usage
-To run the script:
-- Download [up-to-date version](https://github.com/farag2/Setup-Windows-10/releases);
-- Change encoding to "UTF-8 with BOM" and run it through powershell.exe.
-
-or
-
-- Copy the script code and paste it into [PowerShell ISE](https://docs.microsoft.com/en-us/powershell/scripting/components/ise/windows-powershell-integrated-scripting-environment--ise-).
-
-**NB**
-- PowerShell and PowerShell ISE must be run with elevated privileges;
-- Set PowerShell execution policy Set-ExecutionPolicy Unrestricted -Force
to be able to run .ps1 files.
- - Read more about [execution policy](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies)
-
-## Supported Windows version
-| Version | Code name | Marketing name | Build |
-| :-----: | -------------| ---------------------- | :---: |
-| 1903 | 19H1 | May 2019 Update | 18362 |
-
-## FAQ
-Read the code you run carefully. Some functions are presented as an example only. You must be aware of the meaning of the functions in the code. **If you're not sure what the script does, do not run it.**
-
-The script was written for PowerShell 5.1 and for the current up-to-date version of Windows 10 Pro x64. Some of functions can be run also on LTSB/LTSC and on older versions of Windows and PowerShell (also on 32bit systems).
-
-## Links
-### Ask a question in
- - [Habr](https://habr.com/ru/post/465365/)
- - [Ru-Board](http://forum.ru-board.com/topic.cgi?forum=62&topic=30617#15)
- - [My Digital Life](https://forums.mydigitallife.net/threads/powershell-script-setup-windows-10.80139/)
- - [Reddit](https://www.reddit.com/r/Windows10/comments/ctg8jw/powershell_script_setup_windows_10/)
-
-## PS
-Collection of useful [scripts](https://gist.github.com/farag2)
diff --git a/Screenshots/Startmenu.png b/Screenshots/Startmenu.png
deleted file mode 100644
index 1000b66e..00000000
Binary files a/Screenshots/Startmenu.png and /dev/null differ
diff --git a/Screenshots/read-host.png b/Screenshots/read-host.png
deleted file mode 100644
index 903d359a..00000000
Binary files a/Screenshots/read-host.png and /dev/null differ
diff --git a/Start menu layout/Startmenu.reg b/Start menu layout/Startmenu.reg
deleted file mode 100644
index 815b90db..00000000
Binary files a/Start menu layout/Startmenu.reg and /dev/null differ
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI.sln b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI.sln
new file mode 100644
index 00000000..3619b086
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.757
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Win-10-Setup-Script-GUI", "Win-10-Setup-Script-GUI\Win-10-Setup-Script-GUI.csproj", "{6A62BCFD-303E-4B97-9920-C475AEAE1F5A}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {6A62BCFD-303E-4B97-9920-C475AEAE1F5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A62BCFD-303E-4B97-9920-C475AEAE1F5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A62BCFD-303E-4B97-9920-C475AEAE1F5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A62BCFD-303E-4B97-9920-C475AEAE1F5A}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {DF8F053F-8160-468F-9A31-E975021891A6}
+ EndGlobalSection
+EndGlobal
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.config b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.config
new file mode 100644
index 00000000..8e156463
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.xaml b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.xaml
new file mode 100644
index 00000000..55664929
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.xaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.xaml.cs b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.xaml.cs
new file mode 100644
index 00000000..8b546e10
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace Win_10_Setup_Script_GUI
+{
+ ///
+ /// Логика взаимодействия для App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/MainWindow.xaml b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/MainWindow.xaml
new file mode 100644
index 00000000..94f2506b
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/MainWindow.xaml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/MainWindow.xaml.cs b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/MainWindow.xaml.cs
new file mode 100644
index 00000000..28ab56e2
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/MainWindow.xaml.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using MahApps.Metro.Controls;
+
+namespace Win_10_Setup_Script_GUI
+{
+ ///
+ /// Логика взаимодействия для MainWindow.xaml
+ ///
+ public partial class MainWindow : MetroWindow
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/AssemblyInfo.cs b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..8af52432
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// Общие сведения об этой сборке предоставляются следующим набором
+// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
+// связанные со сборкой.
+[assembly: AssemblyTitle("Win-10-Setup-Script-GUI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Win-10-Setup-Script-GUI")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
+// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
+// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
+[assembly: ComVisible(false)]
+
+//Чтобы начать создание локализуемых приложений, задайте
+//CultureYouAreCodingWith в файле .csproj
+//внутри . Например, если используется английский США
+//в своих исходных файлах установите в en-US. Затем отмените преобразование в комментарий
+//атрибута NeutralResourceLanguage ниже. Обновите "en-US" в
+//строка внизу для обеспечения соответствия настройки UICulture в файле проекта.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //где расположены словари ресурсов по конкретным тематикам
+ //(используется, если ресурс не найден на странице,
+ // или в словарях ресурсов приложения)
+ ResourceDictionaryLocation.SourceAssembly //где расположен словарь универсальных ресурсов
+ //(используется, если ресурс не найден на странице,
+ // в приложении или в каких-либо словарях ресурсов для конкретной темы)
+)]
+
+
+// Сведения о версии сборки состоят из следующих четырех значений:
+//
+// Основной номер версии
+// Дополнительный номер версии
+// Номер сборки
+// Редакция
+//
+// Можно задать все значения или принять номер сборки и номер редакции по умолчанию.
+// используя "*", как показано ниже:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Resources.Designer.cs b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..11fc1768
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Resources.Designer.cs
@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программой.
+// Исполняемая версия:4.0.30319.42000
+//
+// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+// повторной генерации кода.
+//
+//------------------------------------------------------------------------------
+
+namespace Win_10_Setup_Script_GUI.Properties {
+ using System;
+
+
+ ///
+ /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
+ ///
+ // Этот класс создан автоматически классом StronglyTypedResourceBuilder
+ // с помощью такого средства, как ResGen или Visual Studio.
+ // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
+ // с параметром /str или перестройте свой проект VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Win_10_Setup_Script_GUI.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Перезаписывает свойство CurrentUICulture текущего потока для всех
+ /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
+ ///
+ internal static System.Drawing.Icon computer {
+ get {
+ object obj = ResourceManager.GetObject("computer", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+ }
+}
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Resources.resx b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Resources.resx
new file mode 100644
index 00000000..7cb53318
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Resources.resx
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\computer.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Settings.Designer.cs b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..75540695
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Win_10_Setup_Script_GUI.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Settings.settings b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Settings.settings
new file mode 100644
index 00000000..033d7a5e
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Resources/computer.ico b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Resources/computer.ico
new file mode 100644
index 00000000..4391cc2e
Binary files /dev/null and b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Resources/computer.ico differ
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI.csproj b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI.csproj
new file mode 100644
index 00000000..9f3806a0
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI.csproj
@@ -0,0 +1,111 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {6A62BCFD-303E-4B97-9920-C475AEAE1F5A}
+ WinExe
+ Win_10_Setup_Script_GUI
+ Win-10-Setup-Script-GUI
+ v4.5
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll
+
+
+ ..\packages\MahApps.Metro.1.6.5\lib\net45\MahApps.Metro.dll
+
+
+
+
+
+ ..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+ MainWindow.xaml
+ Code
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/packages.config b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/packages.config
new file mode 100644
index 00000000..92245f10
--- /dev/null
+++ b/VS/Win-10-Setup-Script-GUI/Win-10-Setup-Script-GUI/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Win 10.ps1 b/Win 10.ps1
deleted file mode 100644
index 9660401d..00000000
--- a/Win 10.ps1
+++ /dev/null
@@ -1,1753 +0,0 @@
-# Remove all text from the current display
-# Очистить экран
-Clear-Host
-# Сlear $Error variable
-# Очистка переменной $Error
-$Error.Clear()
-# Get information about the current culture settings
-# Получить сведения о параметрах текущей культуры
-IF ((Get-Culture).Name -eq "ru-RU")
-{
- $RU = $true
-}
-# Turn off diagnostics tracking services
-# Отключить службы диагностического отслеживания
-$services = @(
- # Connected User Experiences and Telemetry
- # Функциональные возможности для подключенных пользователей и телеметрия
- "DiagTrack",
- # Data Usage
- # Использование данных
- "DusmSvc",
- # SSDP Discovery
- # Обнаружение SSDP
- "SSDPSRV"
-)
-Get-Service -Name $services | Stop-Service -Force
-Get-Service -Name $services | Set-Service -StartupType Disabled
-# Turn off the Autologger session at the next computer restart ###
-# Отключить сборщик AutoLogger при следующем запуске ПК
-Update-AutologgerConfig -Name AutoLogger-Diagtrack-Listener -Start 0
-# Turn off the SQMLogger session at the next computer restart
-# Отключить сборщик SQMLogger при следующем запуске ПК
-Update-AutologgerConfig -Name SQMLogger -Start 0
-# Set the operating system diagnostic data level to "Basic"
-# Установить уровень отправляемых диагностических сведений на "Базовый"
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection -Name AllowTelemetry -Value 1 -Force
-# Turn off Windows Error Reporting
-# Отключить отчеты об ошибках Windows для всех пользователей
-New-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\Windows Error Reporting" -Name Disabled -Value 1 -Force
-# Change Windows Feedback frequency to "Never"
-# Изменить частоту формирования отзывов на "Никогда"
-IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Siuf\Rules))
-{
- New-Item -Path HKCU:\Software\Microsoft\Siuf\Rules -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Siuf\Rules -Name NumberOfSIUFInPeriod -Value 0 -Force
-# Turn off diagnostics tracking scheduled tasks
-# Отключить задачи диагностического отслеживания
-$tasks = @(
- "ProgramDataUpdater",
- "Microsoft Compatibility Appraiser",
- "Microsoft-Windows-DiskDiagnosticDataCollector",
- "TempSignedLicenseExchange",
- "MapsToastTask",
- "DmClient",
- "FODCleanupTask",
- "DmClientOnScenarioDownload",
- "BgTaskRegistrationMaintenanceTask",
- "File History (maintenance mode)",
- "WinSAT",
- "UsbCeip",
- "Consolidator",
- "Proxy",
- "MNO Metadata Parser",
- "NetworkStateChangeTask",
- "GatherNetworkInfo",
- "XblGameSaveTask",
- "EnableLicenseAcquisition",
- "QueueReporting",
- "FamilySafetyMonitor",
- "FamilySafetyRefreshTask"
-)
-Get-ScheduledTask -TaskName $tasks | Disable-ScheduledTask
-# Turn off "The Windows Filtering Platform has blocked a connection" message
-# Отключить в "Журналах Windows/Безопасность" сообщение "Платформа фильтрации IP-пакетов Windows разрешила подключение"
-auditpol /set /subcategory:"{0CCE9226-69AE-11D9-BED3-505054503030}" /success:disable /failure:disable
-# Set File Explorer to open to This PC by default
-# Открывать "Этот компьютер" в Проводнике
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name LaunchTo -Value 1 -Force
-# Show Hidden Files, Folders, and Drives
-# Показывать скрытые файлы, папки и диски
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name Hidden -Value 1 -Force
-# Show File Name Extensions
-# Показывать расширения для зарегистрированных типов файлов
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name HideFileExt -Value 0 -Force
-# Hide Task View button on taskbar
-# Не показывать кнопку Просмотра задач
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name ShowTaskViewButton -Value 0 -Force
-# Show folder merge conflicts
-# Не скрывать конфликт слияния папок
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name HideMergeConflicts -Value 0 -Force
-# Turn off Snap Assist
-# Не показывать при прикреплении окна, что можно прикрепить рядом с ним
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name SnapAssist -Value 0 -Force
-# Turn off check boxes to select items
-# Отключить флажки для выбора элементов
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name AutoCheckSelect -Value 0 -Force
-# Show seconds on taskbar clock
-# Включить отображение секунд в системных часах на панели задач
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name ShowSecondsInSystemClock -Value 1 -Force
-# Hide People button on the taskbar
-# Не показывать панель "Люди" на панели задач
-IF (-not (Test-Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People))
-{
- New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People -Name PeopleBand -Value 0 -Force
-# Hide all folders in the navigation pane
-# Не отображать все папки в области навигации
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name NavPaneShowAllFolders -Value 0 -Force
-# Turn on acrylic taskbar transparency
-# Включить прозрачную панель задач
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name UseOLEDTaskbarTransparency -Value 1 -Force
-# Turn off app launch tracking to improve Start menu and search results
-# Не разрешать Windows отслеживать запуски приложений для улучшения меню "Пуск" и результатов поиска и не показывать недавно добавленные приложения
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name Start_TrackProgs -Value 0 -Force
-# Отобразить "Этот компьютер" на рабочем столе
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel -Name "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" -Value 0 -Force
-# Show more details in file transfer dialog
-# Развернуть диалог переноса файлов
-IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager))
-{
- New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager -Name EnthusiastMode -Value 1 -Force
-# Turn off AutoPlay for all media and devices
-# Отключить автозапуск с внешних носителей
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers -Name DisableAutoplay -Value 1 -Force
-# Turn off the "- Shortcut" name extension for new shortcuts
-# He дoбaвлять "- яpлык" для coздaвaeмыx яpлыкoв
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name link -PropertyType Binary -Value ([byte[]](00, 00, 00, 00)) -Force
-# Turn off SmartScreen for apps and files
-# Отключить SmartScreen для приложений и файлов
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name SmartScreenEnabled -PropertyType String -Value Off -Force
-# Remove the "Previous Versions" tab from properties context menu
-# Отключить отображение вкладки "Предыдущие версии" в свойствах файлов и папок
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name NoPreviousVersionsPage -Value 1 -Force
-# Always show all icons in the notification area
-# Всегда отображать все значки в области уведомлений
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name EnableAutoTray -Value 0 -Force
-# Set the Control Panel view by large icons
-# Установить крупные значки в панели управления
-IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel))
-{
- New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel -Name AllItemsIconView -Value 0 -Force
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel -Name StartupPage -Value 1 -Force
-# Remove 3D Objects folder in "This PC" and in the navigation pane
-# Скрыть папку "Объемные объекты" из "Этот компьютер" и на панели быстрого доступа
-IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag"))
-{
- New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag" -Force
-}
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag" -Name ThisPCPolicy -PropertyType String -Value Hide -Force
-# Make the "Open", "Print", "Edit" context menu items available, when more than 15 selected
-# Сделать доступными элементы контекстного меню "Открыть", "Изменить" и "Печать" при выделении более 15 элементов
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name MultipleInvokePromptMinimum -Value 300 -Force
-# Hide "Frequent folders" in Quick access
-# Не показывать недавно используемые папки на панели быстрого доступа
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name ShowFrequent -Value 0 -Force
-# Hide "Recent files" in Quick access
-# Не показывать недавно использовавшиеся файлы на панели быстрого доступа
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer -Name ShowRecent -Value 0 -Force
-# Turn off creation of an Edge shortcut on the desktop for each user profile
-# Отключить создание ярлыка Edge на рабочем столе для каждого профиля пользователя пользователя
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer -Name DisableEdgeDesktopShortcutCreation -Value 1 -Force
-# Turn on tip, trick, and suggestions as you use Windows
-# Показывать советы, подсказки и рекомендации при использованию Windows
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338389Enabled -Value 1 -Force
-# Turn on Storage Sense to automatically free up space
-# Включить Память устройства для автоматического освобождения места
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 01 -Value 1 -Force
-# Run Storage Sense every month
-# Запускать контроль памяти каждый месяц
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 2048 -Value 30 -Force
-# Delete temporary files that apps aren't using
-# Удалять временные файлы, не используемые в приложениях
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 04 -Value 1 -Force
-# Delete files in recycle bin if they have been there for over 30 days
-# Удалять файлы, которые находятся в корзине более 30 дней
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 256 -Value 30 -Force
-# Never delete files in "Downloads" folder
-# Никогда не удалять файлы из папки "Загрузки"
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy -Name 512 -Value 0 -Force
-# Turn off app suggestions on Start menu
-# Не показывать рекомендации в меню "Пуск"
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338388Enabled -Value 0 -Force
-# Turn off suggested content in the Settings
-# Не показывать рекомендуемое содержание в приложении "Параметры"
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338393Enabled -Value 0 -Force
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353694Enabled -Value 0 -Force
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353696Enabled -Value 0 -Force
-# Turn off automatic installing suggested apps
-# Отключить автоматическую установку рекомендованных приложений
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SilentInstalledAppsEnabled -Value 0 -Force
-# Hide "Windows Ink Workspace" button in taskbar
-# Скрыть кнопку Windows Ink Workspace на панели задач
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\PenWorkspace -Name PenWorkspaceButtonDesiredVisibility -Value 0 -Force
-# Do not offer tailored experiences based on the diagnostic data setting
-# Не предлагать персонализированныее возможности, основанные на выбранном параметре диагностических данных
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Privacy -Name TailoredExperiencesWithDiagnosticDataEnabled -Value 0 -Force
-# Do not let apps on other devices open and message apps on this device, and vice versa
-# Не разрешать приложениям на других устройствах запускать приложения и отправлять сообщения на этом устройстве и наоборот
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CDP -Name RomeSdkChannelUserAuthzPolicy -Value 0 -Force
-# Choose theme color for default Windows mode
-# Выбрать режим Windows по умолчанию
-IF ($RU)
-{
- Write-Host "`nВыберите режим Windows по умолчанию, введя букву: "
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "для светлого режима или " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "для тёмного."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nChoose theme color for default Windows mode by typing"
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "for the light mode or " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "for the dark"
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $theme = Read-Host -Prompt " "
- IF ($theme -eq "L")
- {
- # Show color only on taskbar
- # Отображать цвет элементов только на панели задач
- New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name ColorPrevalence -Value 0 -Force
- # Light Theme Color for Default Windows Mode
- # Режим Windows по умолчанию светлый
- New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 1 -Force
- }
- elseif ($theme -eq "D")
- {
- # Turn on the display of color on Start menu, taskbar, and action center
- # Отображать цвет элементов в меню "Пуск", на панели задач и в центре уведомлений
- New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name ColorPrevalence -Value 1 -Force
- # Dark Theme Color for Default Windows Mode
- # Режим Windows по умолчанию темный
- New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 0 -Force
- }
- elseif ([string]::IsNullOrEmpty($theme))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nНеправильная буква." -ForegroundColor Yellow
- Write-Host "Введите правильную букву: " -NoNewline
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "для светлого режима или " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "для тёмного."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nInvalid letter." -ForegroundColor Yellow
- Write-Host "Type the correct letter: " -NoNewline
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "for the light mode or " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "for the dark."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($theme -eq "L" -or $theme -eq "D")
-# Choose theme color for default app mode
-# Выбрать режим приложения по умолчанию
-IF ($RU)
-{
- Write-Host "`nВыберите режим приложения по умолчанию, введя букву: "
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "для светлого режима или " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "для тёмного."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nChoose theme color for default app mode by typing"
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "for the light mode or " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "for the dark"
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $theme = Read-Host -Prompt " "
- IF ($theme -eq "L")
- {
- # Light theme color for default app mode
- # Режим приложений по умолчанию светлый
- New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 1 -Force
- }
- IF ($theme -eq "D")
- {
- # Dark theme color for default app mode
- # Режим приложений по умолчанию темный
- New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 0 -Force
- }
- elseif ([string]::IsNullOrEmpty($theme))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nНеправильная буква." -ForegroundColor Yellow
- Write-Host "Введите правильную букву: " -NoNewline
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "для светлого режима или " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "для тёмного."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nInvalid letter." -ForegroundColor Yellow
- Write-Host "Type the correct letter: " -NoNewline
- Write-Host "[L]ight " -ForegroundColor Yellow -NoNewline
- Write-Host "for the light mode or " -NoNewline
- Write-Host "[D]ark " -ForegroundColor Yellow -NoNewline
- Write-Host "for the dark."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($theme -eq "L" -or $theme -eq "D")
-# Turn off location for this device
-# Отключить местоположение для этого устройства
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location -Name Value -PropertyType String -Value Deny -Force
-# Turn off thumbnail cache removal
-# Отключить удаление кэша миниатюр
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache" -Name Autorun -Value 0 -Force
-New-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache" -Name Autorun -Value 0 -Force
-# Turn off hibernate
-# Отключить гибридный спящий режим
-New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Power -Name HibernateEnabled -Value 0 -Force
-# Change environment variable for $env:TEMP to $env:SystemDrive\Temp
-# Изменить путь переменной среды для временных файлов на $env:SystemDrive\Temp
-IF (-not (Test-Path -Path $env:SystemDrive\Temp))
-{
- New-Item -Path $env:SystemDrive\Temp -ItemType Directory -Force
-}
-[Environment]::SetEnvironmentVariable("TMP", "$env:SystemDrive\Temp", "User")
-New-ItemProperty -Path HKCU:\Environment -Name TMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
-[Environment]::SetEnvironmentVariable("TEMP", "$env:SystemDrive\Temp", "User")
-New-ItemProperty -Path HKCU:\Environment -Name TEMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
-[Environment]::SetEnvironmentVariable("TMP", "$env:SystemDrive\Temp", "Machine")
-New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name TMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
-[Environment]::SetEnvironmentVariable("TEMP", "$env:SystemDrive\Temp", "Machine")
-New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name TEMP -PropertyType ExpandString -Value %SystemDrive%\Temp -Force
-[Environment]::SetEnvironmentVariable("TMP", "$env:SystemDrive\Temp", "Process")
-[Environment]::SetEnvironmentVariable("TEMP", "$env:SystemDrive\Temp", "Process")
-# Turn on Win32 long paths
-# Включить длинные пути Win32
-New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1 -Force
-# Group svchost.exe processes
-# Группировать одинаковые службы в один процесс svhost.exe
-$ram = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1kb
-New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control -Name SvcHostSplitThresholdInKB -Value $ram -Force
-# Turn on Retpoline patch against Spectre v2
-# Включить патч Retpoline против Spectre v2
-New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name FeatureSettingsOverride -Value 1024 -Force
-New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -Name FeatureSettingsOverrideMask -Value 1024 -Force
-# Turn on the display of stop error information on the BSoD
-# Включить дополнительную информацию при выводе BSoD
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Control\CrashControl -Name DisplayParameters -Value 1 -Force
-# Hide search box or search icon on taskbar
-# Не показывать кнопку поиска
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Search -Name SearchboxTaskbarMode -Value 0 -Force
-# Turn on recycle bin files delete confirmation
-# Запрашивать подтверждение на удалении файлов из корзины
-IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer))
-{
- New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer -Name ConfirmFileDelete -Value 1 -Force
-# Do not preserve zone information
-# Не хранить сведения о зоне происхождения вложенных файлов
-IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments))
-{
- New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments -Name SaveZoneInformation -Value 1 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Attachments -Name SaveZoneInformation -Value 1 -Force
-# Turn off Admin Approval Mode for administrators
-# Отключить использование режима одобрения администратором для встроенной учетной записи администратора
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name ConsentPromptBehaviorAdmin -Value 0 -Force
-# Turn off user first sign-in animation
-# Не показывать анимацию при первом входе в систему
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name EnableFirstLogonAnimation -Value 0 -Force
-# Turn on access to mapped drives from app running with elevated permissions with Admin Approval Mode enabled
-# Включить доступ к сетевым дискам при включенном режиме одобрения администратором при доступе из программ, запущенных с повышенными правами
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name EnableLinkedConnections -Value 1 -Force
-# Turn off "Look for an app in the Microsoft Store" in "Open with" dialog
-# Отключить поиск программ в Microsoft Store при открытии диалога "Открыть с помощью"
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer))
-{
- New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name NoUseStoreOpenWith -Value 1 -Force
-# Turn on ribbon in File Explorer
-# Включить отображение ленты проводника в развернутом виде
-IF (-not (Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Ribbon))
-{
- New-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Ribbon -Force
-}
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Ribbon -Name MinimizedStateTabletModeOff -Value 0 -Force
-# Turn off "New App Installed" notification
-# Не показывать уведомление "Установлено новое приложение"
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name NoNewAppAlert -Value 1 -Force
-# Turn off recently added apps on Start Menu
-# Не показывать недавно добавленные приложения в меню "Пуск"
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name HideRecentlyAddedApps -Value 1 -Force
-# Turn off Windows Game Recording and Broadcasting
-# Отключить Запись и трансляции игр Windows
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR))
-{
- New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR -Name AllowgameDVR -Value 0 -Force
-# Set download mode for delivery optization on "HTTP only"
-# Отключить оптимизацию доставки для обновлений с других ПК
-Get-Service -Name DoSvc | Stop-Service -Force
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization))
-{
- New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization -Name DODownloadMode -Value 0 -Force
-# Always wait for the network at computer startup and logon
-# Всегда ждать сеть при запуске и входе в систему
-IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon"))
-{
- New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon" -Force
-}
-New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name SyncForegroundPolicy -Value 1 -Force
-# Do not allow apps to use advertising ID
-# Не разрешать приложениям использовать идентификатор рекламы
-New-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Value 0 -Force
-# Turn off Cortana
-# Отключить Cortana
-IF (-not $RU)
-{
- IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search"))
- {
- New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Force
- }
- New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name AllowCortana -Value 0 -Force
-}
-# Turn off Windows Defender SmartScreen for Microsoft Edge
-# Отключить Windows Defender SmartScreen в Microsoft Edge
-$edge = (Get-AppxPackage "Microsoft.MicrosoftEdge").PackageFamilyName
-IF (-not (Test-Path -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter"))
-{
- New-Item -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter" -Force
-}
-New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter" -Name EnabledV9 -Value 0 -Force
-New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\PhishingFilter" -Name PreventOverride -Value 0 -Force
-# Do not allow Microsoft Edge to start and load the Start and New Tab page at Windows startup and each time Microsoft Edge is closed
-# Не разрешать Edge запускать и загружать страницу при загрузке Windows и каждый раз при закрытии Edge
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader))
-{
- New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader -Name AllowTabPreloading -Value 0 -Force
-# Do not allow Microsoft Edge to pre-launch at Windows startup, when the system is idle, and each time Microsoft Edge is closed
-# Не разрешать предварительный запуск Edge при загрузке Windows, когда система простаивает, и каждый раз при закрытии Edge
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main))
-{
- New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main -Name AllowPrelaunch -Value 0 -Force
-# Do not allow Windows 10 to manage default printer
-# Отключить управление принтером, используемым по умолчанию, со стороны Windows 10
-New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows" -Name LegacyDefaultPrinterMode -Value 1 -Force
-# Turn off JPEG desktop wallpaper import quality reduction
-# Установка качества фона рабочего стола на 100 %
-New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name JPEGImportQuality -Value 100 -Force
-# Turn off sticky Shift key after pressing 5 times
-# Отключить залипание клавиши Shift после 5 нажатий
-New-ItemProperty -Path "HKCU:\Control Panel\Accessibility\StickyKeys" -Name Flags -PropertyType String -Value 506 -Force
-# Uninstall all UWP apps from all accounts except
-# Удалить все UWP-приложения из всех учетных записей, кроме
-$ExcludedApps = @(
- # iTunes
- "AppleInc.iTunes"
- # Intel UWP-panel
- # UWP-панель Intel
- "AppUp.IntelGraphicsControlPanel"
- "AppUp.IntelGraphicsExperience"
- # Microsoft Desktop App Installer
- "Microsoft.DesktopAppInstaller"
- # Extensions
- # Расширения
- "Microsoft.*Extension*"
- # Language pack
- # Языковой пакет
- "Microsoft.LanguageExperiencePack*"
- # Screen Sketch
- # Набросок на фрагменте экрана
- "Microsoft.ScreenSketch"
- # Photos
- # Фотографии
- "Microsoft.Windows.Photos"
- # Start
- # Меню "Пуск"
- "Microsoft.Windows.StartMenuExperienceHost"
- # NVIDIA Control Panel
- # Панель управления NVidia
- "NVIDIACorp.NVIDIAControlPanel"
- # Microsoft Store
- ".*Store.*"
-)
-$OFS = "|"
-Get-AppxPackage -PackageTypeFilter Bundle -AllUsers | Where-Object {$_.Name -cnotmatch $ExcludedApps} | Remove-AppxPackage -AllUsers
-$OFS = " "
-# Uninstall all UWP apps from all accounts except
-# Удалить все UWP-приложения из системной учетной записи, кроме
-$ExcludedApps = @(
- # Intel UWP-panel
- # UWP-панель Intel
- "AppUp.IntelGraphicsControlPanel"
- "AppUp.IntelGraphicsExperience"
- # Microsoft Desktop App Installer
- "Microsoft.DesktopAppInstaller"
- # Extensions
- # Расширения
- "Microsoft.*Extension*"
- # NVIDIA Control Panel
- # Панель управления NVidia
- "NVIDIACorp.NVIDIAControlPanel"
- # Microsoft Store
- ".*Store.*"
-)
-$OFS = "|"
-Get-AppxProvisionedPackage -Online | Where-Object -FilterScript {$_.DisplayName -cnotmatch $ExcludedApps} | Remove-AppxProvisionedPackage -Online
-$OFS = " "
-# Turn off Windows features
-# Отключить компоненты
-$features = @(
- # Windows Fax and Scan
- # Факсы и сканирование
- "FaxServicesClientPackage",
- # Legacy Components
- # Компоненты прежних версий
- "LegacyComponents",
- # Media Features
- # Компоненты работы с мультимедиа
- "MediaPlayback",
- # PowerShell 2.0
- "MicrosoftWindowsPowerShellV2",
- "MicrosoftWindowsPowershellV2Root",
- # Microsoft XPS Document Writer
- # Средство записи XPS-документов (Microsoft)
- "Printing-XPSServices-Features",
- # Microsoft Print to PDF
- # Печать в PDF (Майкрософт)
- "Printing-PrintToPDFServices-Features",
- # Work Folders Client
- # Клиент рабочих папок
- "WorkFolders-Client"
-)
-foreach ($feature in $features)
-{
- Disable-WindowsOptionalFeature -Online -FeatureName $feature -NoRestart
-}
-# Uninstall Onedrive
-# Удалить OneDrive
-Stop-Process -Name OneDrive -Force -ErrorAction SilentlyContinue
-Start-Process -FilePath "$env:SystemRoot\SysWOW64\OneDriveSetup.exe" -ArgumentList "/uninstall" -Wait
-Stop-Process -Name explorer
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive))
-{
- New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableFileSyncNGSC -Value 1 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableFileSync -Value 1 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableMeteredNetworkFileSync -Value 0 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive -Name DisableLibrariesDefaultSaveToOneDrive -Value 1 -Force
-New-ItemProperty -Path HKCU:\Software\Microsoft\OneDrive -Name DisablePersonalSync -Value 1 -Force
-Remove-ItemProperty -Path HKCU:\Environment -Name OneDrive -Force -ErrorAction SilentlyContinue
-Remove-Item -Path $env:USERPROFILE\OneDrive -Recurse -Force -ErrorAction SilentlyContinue
-Remove-Item -Path $env:LOCALAPPDATA\Microsoft\OneDrive -Recurse -Force -ErrorAction SilentlyContinue
-Remove-Item -Path "$env:ProgramData\Microsoft OneDrive" -Recurse -Force -ErrorAction SilentlyContinue
-Unregister-ScheduledTask -TaskName *OneDrive* -Confirm:$false
-# Turn on updates for other Microsoft products
-# Включить автоматическое обновление для других продуктов Microsoft
-(New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "")
-# Turn off Game Bar
-# Отключить игровую панель
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\GameDVR -Name AppCaptureEnabled -Value 0 -Force
-New-ItemProperty -Path HKCU:\System\GameConfigStore -Name GameDVR_Enabled -Value 0 -Force
-# Turn off Game Mode
-# Отключить игровой режим
-New-ItemProperty -Path HKCU:\Software\Microsoft\GameBar -Name AllowAutoGameMode -Value 0 -Force
-# Turn off Game Bar tips
-# Отключить подсказки игровой панели
-New-ItemProperty -Path HKCU:\Software\Microsoft\GameBar -Name ShowStartupPanel -Value 0 -Force
-# Enable System Restore
-# Включить восстановление системы
-Enable-ComputerRestore -Drive $env:SystemDrive
-Get-ScheduledTask -TaskName SR | Enable-ScheduledTask
-Get-Service -Name swprv, vss | Set-Service -StartupType Manual
-Get-Service -Name swprv, vss | Start-Service
-Get-CimInstance -ClassName Win32_ShadowCopy | Remove-CimInstance
-# Turn off Windows Script Host
-# Отключить Windows Script Host
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings" -Name Enabled -Value 0 -Force
-# Create scheduled task with the disk cleanup tool in Task Scheduler. The task runs every 90 days
-# Создать в Планировщике задач задачу по запуску очистки диска. Задача выполняется каждые 90 дней
-$keys = @(
- # Delivery Optimization Files
- # Файлы оптимизации доставки
- "Delivery Optimization Files",
- # Device driver packages
- # Пакеты драйверов устройств
- "Device Driver Packages",
- # Previous Windows Installation(s)
- # Предыдущие установки Windows
- "Previous Installations",
- # Файлы журнала установки
- "Setup Log Files",
- # Temporary Setup Files
- "Temporary Setup Files",
- # Windows Update Cleanup
- # Очистка обновлений Windows
- "Update Cleanup",
- # Windows Defender Antivirus
- "Windows Defender",
- # Windows upgrade log files
- # Файлы журнала обновления Windows
- "Windows Upgrade Log Files")
-foreach ($key in $keys)
-{
- New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\$key" -Name StateFlags1337 -Value 2 -Force
-}
-$action = New-ScheduledTaskAction -Execute "cleanmgr.exe" -Argument "/sagerun:1337"
-$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 90 -At 9am
-$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
-$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest
-$params = @{
- "TaskName" = "Update Cleanup"
- "Action" = $action
- "Trigger" = $trigger
- "Settings" = $settings
- "Principal" = $principal
-}
-Register-ScheduledTask @params -Force
-# Create task to clean out the "$env:SystemRoot\SoftwareDistribution\Download" folder in Task Scheduler.. The task runs on Thursdays every 4 weeks.
-# Создать в Планировщике задач задачу по очистке папки "$env:SystemRoot\SoftwareDistribution\Download". Задача выполняется по четвергам каждую 4 неделю.
-$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
- `$getservice = Get-Service -Name wuauserv
- `$getservice.WaitForStatus("Stopped", "01:00:00")
- Get-ChildItem -Path `$env:SystemRoot\SoftwareDistribution\Download -Recurse -Force | Remove-Item -Recurse -Force
-"@
-$trigger = New-JobTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Thursday -At 9am
-$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
-$principal = New-ScheduledTaskPrincipal -UserId System -RunLevel Highest
-$params = @{
- "TaskName" = "SoftwareDistribution"
- "Action" = $action
- "Trigger" = $trigger
- "Settings" = $settings
- "Principal" = $principal
-}
-Register-ScheduledTask @params -Force
-# Create scheduled task with the $env:TEMP folder cleanup in Task Scheduler. The task runs every 62 days
-# Создать в Планировщике задач очистки папки $env:TEMP. Задача выполняется каждые 62 дня
-$action = New-ScheduledTaskAction -Execute powershell.exe -Argument @"
- Get-ChildItem -Path `$env:TEMP -Force -Recurse | Remove-Item -Force -Recurse
-"@
-$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 62 -At 9am
-$settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
-$principal = New-ScheduledTaskPrincipal -UserId System -RunLevel Highest
-$params = @{
- "TaskName" = "Temp"
- "Action" = $action
- "Trigger" = $trigger
- "Settings" = $settings
- "Principal" = $principal
-}
-Register-ScheduledTask @params -Force
-# Turn off default background apps except
-# Запретить стандартным приложениям работать в фоновом режиме, кроме
-$apps = @(
- # Content Delivery Manager
- "Microsoft.Windows.ContentDeliveryManager*"
- # Cortana
- "Microsoft.Windows.Cortana*"
- # Windows Security
- # Безопасность Windows
- "Microsoft.Windows.SecHealthUI*"
- # ShellExperienceHost
- "Microsoft.Windows.ShellExperienceHost*"
- # StartMenuExperienceHost
- "Microsoft.Windows.StartMenuExperienceHost*")
-foreach ($app in $apps)
-{
- Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications -Exclude $apps |
- ForEach-Object -Process {
- New-ItemProperty -Path $_.PsPath -Name Disabled -Value 1 -Force
- New-ItemProperty -Path $_.PsPath -Name DisabledByUser -Value 1 -Force
- }
-}
-# Set power management scheme for desktop and laptop
-# Установить схему управления питания для стационарного ПК и ноутбука
-IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -eq 1)
-{
- # High performance for desktop
- # Высокая производительность для стационарного ПК
- powercfg /setactive SCHEME_MIN
-}
-IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -eq 2)
-{
- # Balanced for laptop
- # Сбалансированная для ноутбука
- powercfg /setactive SCHEME_BALANCED
-}
-# Turn on .NET 4 runtime for all apps
-# Использовать последнюю установленную версию .NET Framework для всех приложений
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\.NETFramework -Name OnlyUseLatestCLR -Value 1 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework -Name OnlyUseLatestCLR -Value 1 -Force
-# Turn on Num Lock at startup
-# Включить Num Lock при загрузке
-New-ItemProperty -Path "Registry::HKEY_USERS\.DEFAULT\Control Panel\Keyboard" -Name InitialKeyboardIndicators -PropertyType String -Value 2147483650 -Force
-# Add folder to exclude from Windows Defender Antivirus scan
-# Добавить папку в список исключений сканирования Защитника Windows
-IF ($RU)
-{
- Write-Host "`nВведите полные пути до файлов или папок, которые следует "
- Write-Host "исключить из списка сканирования Windows Defender."
- Write-Host "Пути должны быть разделены запятыми и взяты в кавычки." -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the full paths to files or folders, which to exclude "
- Write-Host "from Windows Defender Antivirus Scan."
- Write-Host "The paths must be separated by commas and taken in quotes." -ForegroundColor Yellow
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-function ExclusionPath
-{
- [CmdletBinding()]
- Param
- (
- [Parameter(Mandatory = $True)]
- [string[]]$paths
- )
- $paths = $paths.Replace("`"", "").Split(",").Trim()
- Add-MpPreference -ExclusionPath $paths -Force
-}
-Do
-{
- $paths = Read-Host -Prompt " "
- IF ($paths -match "`"")
- {
- ExclusionPath $paths
- }
- elseif ([string]::IsNullOrEmpty($paths))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nПути не взяты в кавычки." -ForegroundColor Yellow
- Write-Host "Введите пути, взяв в кавычки и разделив запятыми."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nThe paths hasn't been taken in quotes." -ForegroundColor Yellow
- Write-Host "Type the paths by quoting and separating by commas."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($paths -match "`"")
-# Turn on Windows Defender Exploit Guard Network Protection
-# Включить Защиту сети в Защитнике Windows
-Set-MpPreference -EnableNetworkProtection Enabled
-# Turn on Controlled folder access and add protected folders
-# Включить контролируемый доступ к папкам и добавить защищенные папки
-IF ($RU)
-{
- Write-Host "`nВведите путь до папки, чтобы добавить в список защищенных папок."
- Write-Host "Пути должны быть разделены запятыми и взяты в кавычки." -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType folder path to add to protected folders list."
- Write-Host "The paths must be separated by commas and taken in quotes." -ForegroundColor Yellow
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-function ControlledFolder
-{
- [CmdletBinding()]
- Param
- (
- [Parameter(Mandatory = $True)]
- [string[]]$paths
- )
- Set-MpPreference -EnableControlledFolderAccess Enabled
- $paths = $paths.Replace("`"", "").Split(",").Trim()
- Add-MpPreference -ControlledFolderAccessProtectedFolders $paths
-}
-Do
-{
- $paths = Read-Host -Prompt " "
- IF ($paths -match "`"")
- {
- ControlledFolder $paths
- }
- elseif ([string]::IsNullOrEmpty($paths))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nПути не взяты в кавычки." -ForegroundColor Yellow
- Write-Host "Введите пути, взяв в кавычки и разделив запятыми."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nThe paths hasn't been taken in quotes." -ForegroundColor Yellow
- Write-Host "Type the paths by quoting and separating by commas."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($paths -match "`"")
-# Turn on Windows Defender PUA Protection
-# Включить блокировки потенциально нежелательных приложений
-Set-MpPreference -PUAProtection Enabled
-# Turn on firewall & network protection
-# Включить брандмауэр
-Set-NetFirewallProfile -Enabled True
-# Turn off F1 Help key
-# Отключить справку по нажатию F1
-IF (-not (Test-Path -Path "HKCU:\Software\Classes\Typelib\{8cec5860-07a1-11d9-b15e-000d56bfe6ee}\1.0\0\win64"))
-{
- New-Item -Path "HKCU:\Software\Classes\Typelib\{8cec5860-07a1-11d9-b15e-000d56bfe6ee}\1.0\0\win64" -Force
-}
-New-ItemProperty -Path "HKCU:\Software\Classes\Typelib\{8cec5860-07a1-11d9-b15e-000d56bfe6ee}\1.0\0\win64" -Name "(default)" -PropertyType String -Value "" -Force
-# Show Task Manager details
-# Раскрыть окно Диспетчера задач
-$taskmgr = Get-Process -Name Taskmgr -ErrorAction SilentlyContinue
-IF ($taskmgr)
-{
- $taskmgr.CloseMainWindow()
-}
-$taskmgr = Start-Process -FilePath taskmgr.exe -WindowStyle Hidden -PassThru
-Do
-{
- Start-Sleep -Milliseconds 100
- $preferences = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\TaskManager -Name Preferences -ErrorAction SilentlyContinue
-}
-Until ($preferences)
-Stop-Process -Name Taskmgr
-$preferences.Preferences[28] = 0
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\TaskManager -Name Preferences -PropertyType Binary -Value $preferences.Preferences -Force
-# Do not allow the computer to turn off the device to save power for desktop
-# Запретить отключение Ethernet-адаптера для экономии энергии для стационарного ПК
-IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -eq 1)
-{
- $adapter = Get-NetAdapter -Physical | Get-NetAdapterPowerManagement
- $adapter.AllowComputerToTurnOffDevice = "Disabled"
- $adapter | Set-NetAdapterPowerManagement
-}
-# Add "Extract" to MSI file type context menu
-# Добавить пункт "Extract" для MSI в контекстное меню
-IF (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract\Command))
-{
- New-Item -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract\Command -Force
-}
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract\Command -Name "(default)" -PropertyType String -Value "msiexec.exe /a `"%1`" /qb TARGETDIR=`"%1 extracted`"" -Force
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract -Name MUIVerb -PropertyType String -Value "@shell32.dll,-31382" -Force
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Msi.Package\shell\Extract -Name Icon -PropertyType String -Value "shell32.dll,-16817" -Force
-# Add "Run as different user" from context menu for .exe file type
-# Добавить "Запуск от имени друго пользователя" в контекстное меню для .exe файлов
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser -Name "(default)" -PropertyType String -Value "@shell32.dll,-50944" -Force
-Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser -Name Extended -Force -ErrorAction SilentlyContinue
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser -Name SuppressionPolicyEx -PropertyType String -Value "{F211AA05-D4DF-4370-A2A0-9F19C09756A7}" -Force
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\exefile\shell\runasuser\command -Name DelegateExecute -PropertyType String -Value "{ea72d00e-4960-42fa-ba92-7792a7944c1d}" -Force
-# Add "Install" to CAB file type context menu
-# Добавить пункт "Установить" для CAB-файлов в контекстном меню
-IF (-not (Test-Path -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command))
-{
- New-Item -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command -Force
-}
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command -Name "(default)" -PropertyType String -Value "cmd /c DISM /Online /Add-Package /PackagePath:`"%1`" /NoRestart & pause" -Force
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs -Name MUIVerb -PropertyType String -Value "@shell32.dll,-10210" -Force
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs -Name HasLUAShield -PropertyType String -Value "" -Force
-# Remove "Cast to Device" from context menu
-# Удалить пункт "Передать на устройство" из контекстного меню
-IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"))
-{
- New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Force
-}
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Name "{7AD84985-87B4-4a16-BE58-8B72A5B390F7}" -PropertyType String -Value "Play to menu" -Force
-# Remove "Share" from context menu
-# Удалить пункт "Отправить" (поделиться) из контекстного меню
-IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"))
-{
- New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Force
-}
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Name "{E2BF9676-5F8F-435C-97EB-11607A5BEDF7}" -PropertyType String -Value "" -Force
-# Remove "Previous Versions" from file context menu
-# Удалить пункт "Восстановить прежнюю версию" из контекстного меню
-IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"))
-{
- New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Force
-}
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" -Name "{596AB062-B4D2-4215-9F74-E9109B0A8153}" -PropertyType String -Value "" -Force
-# Remove "Edit with Paint 3D" from context menu
-# Удалить пункт "Изменить с помощью Paint 3D" из контекстного меню
-$exts = @(".bmp", ".gif", ".jpe", ".jpeg", ".jpg", ".png", ".tif", ".tiff")
-foreach ($ext in $exts)
-{
- New-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\SystemFileAssociations\$ext\Shell\3D Edit" -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-}
-# Remove "Include in Library" from context menu
-# Удалить пункт "Добавить в библиотеку" из контекстного меню
-New-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\Library Location" -Name "(default)" -PropertyType String -Value "-{3dad6c5d-2167-4cae-9914-f99e41c12cfa}" -Force
-# Remove "Turn on BitLocker" from context menu
-# Удалить пункт "Включить Bitlocker" из контекстного меню
-IF (Get-WindowsEdition -Online | Where-Object -FilterScript {$_.Edition -eq "Professional" -or $_.Edition -eq "Enterprise"})
-{
- New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\encrypt-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
- New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\encrypt-bde-elev -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
- New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\manage-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
- New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\resume-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
- New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\resume-bde-elev -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
- New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Drive\shell\unlock-bde -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-}
-# Remove "Edit with Photos" from context menu
-# Удалить пункт "Изменить с помощью приложения "Фотографии"" из контекстного меню
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\AppX43hnxtbyyps62jhe9sqpdzxn1790zetc\Shell\ShellEdit -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-# Remove "Create a new video" from Context Menu
-# Удалить пункт "Создать новое видео" из контекстного меню
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\AppX43hnxtbyyps62jhe9sqpdzxn1790zetc\Shell\ShellCreateVideo -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-# Remove "Edit" from Context Menu
-# Удалить пункт "Изменить" из контекстного меню
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\edit -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-# Remove "Print" from batch and cmd files context menu
-# Удалить пункт "Печать" из контекстного меню для bat- и cmd-файлов
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\batfile\shell\print -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\cmdfile\shell\print -Name ProgrammaticAccessOnly -PropertyType String -Value "" -Force
-# Remove "Compressed (zipped) Folder" from context menu
-# Удалить пункт "Сжатая ZIP-папка" из контекстного меню
-Remove-Item -Path Registry::HKEY_CLASSES_ROOT\.zip\CompressedFolder\ShellNew -Force -ErrorAction SilentlyContinue
-# Remove "Rich Text Document" from context menu
-# Удалить пункт "Создать Документ в формате RTF" из контекстного меню
-Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.rtf\ShellNew -Name Data -Force -ErrorAction SilentlyContinue
-Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.rtf\ShellNew -Name ItemName -Force -ErrorAction SilentlyContinue
-# Remove "Bitmap image" from context menu
-# Удалить пункт "Создать Точечный рисунок" из контекстного меню
-Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.bmp\ShellNew -Name ItemName -Force -ErrorAction SilentlyContinue
-Remove-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\.bmp\ShellNew -Name NullFile -Force -ErrorAction SilentlyContinue
-# Remove "Send to" from folder context menu
-# Удалить пункт "Отправить" из контекстного меню папки
-New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo -Name "(default)" -PropertyType String -Value "" -Force
-# Set the default input method to the English language
-# Установить метод ввода по умолчанию на английский язык
-Set-WinDefaultInputMethodOverride "0409:00000409"
-# Unpin Microsoft Edge and Microsoft Store from taskbar
-# Открепить Microsoft Edge и Microsoft Store от панели задач
-$Signature = @{
- Namespace = "WinAPI"
- Name = "GetStr"
- Language = "CSharp"
- MemberDefinition = @"
- [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
- public static extern IntPtr GetModuleHandle(string lpModuleName);
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
- public static string GetString(uint strId)
- {
- IntPtr intPtr = GetModuleHandle("shell32.dll");
- StringBuilder sb = new StringBuilder(255);
- LoadString(intPtr, strId, sb, sb.Capacity);
- return sb.ToString();
- }
-"@
-}
-IF (-not ("WinAPI.GetStr" -as [type]))
-{
- Add-Type @Signature -Using System.Text
-}
-$unpin = [WinAPI.GetStr]::GetString(5387)
-$apps = (New-Object -ComObject Shell.Application).NameSpace("shell:::{4234d49b-0245-4df3-b780-3893943456e1}").Items()
-$apps | Where-Object -FilterScript {$_.Path -like "Microsoft.MicrosoftEdge*"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $unpin} | ForEach-Object -Process {$_.DoIt()}}
-$apps | Where-Object -FilterScript {$_.Path -like "Microsoft.WindowsStore*"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $unpin} | ForEach-Object -Process {$_.DoIt()}}
-# Do not use sign-in info to automatically finish setting up device after an update or restart
-# Не использовать данные для входа для автоматического завершения настройки устройства после перезапуска или обновления
-$sid = (Get-CimInstance -ClassName Win32_UserAccount | Where-Object -FilterScript {$_.Name -eq "$env:USERNAME"}).SID
-IF (-not (Test-Path -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserARSO\$sid"))
-{
- New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserARSO\$sid" -Force
-}
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserARSO\$sid" -Name OptOut -Value 1 -Force
-# Remove Microsoft Edge shortcut from the Desktop
-# Удалить ярлык Microsoft Edge с рабочего стола
-$value = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Desktop
-Remove-Item -Path "$value\Microsoft Edge.lnk" -Force -ErrorAction SilentlyContinue
-# Turn off per-user services
-# Отключить пользовательские службы
-$services = @(
- # Contact Data
- # Служба контактных данных
- "PimIndexMaintenanceSvc_*",
- # User Data Storage
- # Служба хранения данных пользователя
- "UnistoreSvc_*",
- # User Data Access
- # Служба доступа к данным пользователя
- "UserDataSvc_*"
-)
-Get-Service -Name $services | Stop-Service -Force
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\PimIndexMaintenanceSvc -Name Start -Value 4 -Force
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\PimIndexMaintenanceSvc -Name UserServiceFlags -Value 0 -Force
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UnistoreSvc -Name Start -Value 4 -Force
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UnistoreSvc -Name UserServiceFlags -Value 0 -Force
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UserDataSvc -Name Start -Value 4 -Force
-New-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\UserDataSvc -Name UserServiceFlags -Value 0 -Force
-# Let Windows try to fix apps so they're not blurry
-# Разрешить Windows исправлять размытость в приложениях
-New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name EnablePerProcessSystemDPI -Value 1 -Force
-# Remove printers
-# Удалить принтеры
-Remove-Printer -Name Fax, "Microsoft XPS Document Writer", "Microsoft Print to PDF" -ErrorAction SilentlyContinue
-# Hide notification about sign in with Microsoft in the Windows Security
-# Скрыть уведомление Защитника Windows об использовании аккаунта Microsoft
-New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows Security Health\State" -Name AccountProtection_MicrosoftAccount_Disconnected -Value 1 -Force
-# Hide notification about disabled Smartscreen for Microsoft Edge
-# Скрыть уведомление Защитника Windows об отключенном фильтре SmartScreen для Microsoft Edge
-New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows Security Health\State" -Name AppAndBrowser_EdgeSmartScreenOff -Value 0 -Force
-# Remove Windows capabilities
-# Удалить компоненты
-$IncludedApps = @(
- # Microsoft Quick Assist
- # Быстрая поддержка (Майкрософт)
- "App.Support.QuickAssist*"
- # Windows Hello Face
- # Распознавание лиц Windows Hello
- "Hello.Face*"
- # Windows Media Player
- # Проигрыватель Windows Media
- "Media.WindowsMediaPlayer*"
-)
-$OFS = "|"
-Get-WindowsCapability -Online | Where-Object -FilterScript {$_.Name -cmatch $IncludedApps} | Remove-WindowsCapability -Online
-$OFS = " "
-# Open shortcut to the Command Prompt from Start menu as Administrator
-# Запускать ярлык к командной строке в меню "Пуск" от имени Администратора
-$bytes = [System.IO.File]::ReadAllBytes("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk")
-$bytes[0x15] = $bytes[0x15] -bor 0x20
-[System.IO.File]::WriteAllBytes("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk", $bytes)
-# Create shortcut for "Devices and Printers" in "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools"
-# Создать ярлык для "Устройства и принтеры" в "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools"
-$target = "control"
-$linkname = (Get-ControlPanelItem | Where-Object -FilterScript {$_.CanonicalName -eq "Microsoft.DevicesAndPrinters"}).Name
-$link = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\System Tools\$linkname.lnk"
-$shell = New-Object -ComObject Wscript.Shell
-$shortcut = $shell.CreateShortcut($link)
-$shortcut.TargetPath = $target
-$shortcut.Arguments = "printers"
-$shortCut.IconLocation = "$env:SystemRoot\system32\DeviceCenter.dll"
-$shortcut.Save()
-# Import Start menu layout from pre-saved reg file
-# Импорт настроенного меню "Пуск" из заготовленного reg-файла
-Add-Type -AssemblyName System.Windows.Forms
-$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
-# Initial directory "Downloads"
-# Начальная папка "Загрузки"
-$OpenFileDialog.InitialDirectory = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
-$OpenFileDialog.Multiselect = $false
-IF ($RU)
-{
- $OpenFileDialog.Filter = "Файлы реестра (*.reg)|*.reg|Все файлы (*.*)|*.*"
-}
-else
-{
- $OpenFileDialog.Filter = "Registration Files (*.reg)|*.reg|All Files (*.*)|*.*"
-}
-$OpenFileDialog.ShowHelp = $true
-$OpenFileDialog.ShowDialog()
-IF ($OpenFileDialog.FileName)
-{
- Remove-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount -Recurse -Force
- regedit.exe /s $OpenFileDialog.FileName
-}
-Else
-{
- # Unpin all Start Menu tiles
- # Открепить все ярлыки от начального экрана
- $tilecollection = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current
- $unpin = $tilecollection.Data[0..25] + ([byte[]](202,50,0,226,44,1,1,0,0))
- New-ItemProperty -Path $tilecollection.PSPath -Name Data -PropertyType Binary -Value $unpin -Force
- # Show "Explorer" and "Settings" folders on Start menu
- # Отобразить папки "Проводник" и "Параметры" в меню "Пуск"
- $items = @("File Explorer", "Settings")
- $startmenu = Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*windows.data.unifiedtile.startglobalproperties\Current"
- $data = $startmenu.Data[0..19] -join ","
- $data += ",203,50,10,$($items.Length)"
- # Explorer
- # Проводник
- $data += ",5,188,201,168,164,1,36,140,172,3,68,137,133,1,102,160,129,186,203,189,215,168,164,130,1,0"
- # Settings
- # Параметры
- $data += ",5,134,145,204,147,5,36,170,163,1,68,195,132,1,102,159,247,157,177,135,203,209,172,212,1,0"
- $data += ",194,60,1,194,70,1,197,90,1,0"
- New-ItemProperty -Path $startmenu.PSPath -Name Data -PropertyType Binary -Value $data.Split(",") -Force
-}
-# Show accent color on the title bars and window borders
-# Отображать цвет элементов в заголовках окон и границ окон
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\DWM -Name ColorPrevalence -Value 1 -Force
-# Use the PrtScn button to open screen snipping
-# Использовать клавишу Print Screen, чтобы запустить функцию создания фрагмента экрана
-New-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name PrintScreenKeyForSnippingEnabled -Value 1 -Force
-# Do not allow automatic hiding if scroll bars in Windows
-# Отключить автоматическое скрытие полос прокрутки в Windows
-New-ItemProperty -Path "HKCU:\Control Panel\Accessibility" -Name DynamicScrollbars -Value 0 -Force
-# Do not let websites provide locally relevant content by accessing language list
-# Не позволять веб-сайтам предоставлять местную информацию за счет доступа к списку языков
-New-ItemProperty -Path "HKCU:\Control Panel\International\User Profile" -Name HttpAcceptLanguageOptOut -Value 1 -Force
-# Turn on Windows Defender Sandbox
-# Запускать Защитник Windows в песочнице
-[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
-setx /M MP_FORCE_USE_SANDBOX 1
-# Set location of the "Desktop", "Documents" "Downloads" "Music", "Pictures", and "Videos"
-# Переопределить расположение папок "Рабочий стол", "Документы", "Загрузки", "Музыка", "Изображения", "Видео"
-Function KnownFolderPath
-{
- Param (
- [Parameter(Mandatory = $true)]
- [ValidateSet("Desktop", "Documents", "Downloads", "Music", "Pictures", "Videos")]
- [string]$KnownFolder,
-
- [Parameter(Mandatory = $true)]
- [string]$Path
- )
- $KnownFolders = @{
- "Desktop" = @("B4BFCC3A-DB2C-424C-B029-7FE99A87C641");
- "Documents" = @("FDD39AD0-238F-46AF-ADB4-6C85480369C7", "f42ee2d3-909f-4907-8871-4c22fc0bf756");
- "Downloads" = @("374DE290-123F-4565-9164-39C4925E467B", "7d83ee9b-2244-4e70-b1f5-5393042af1e4");
- "Music" = @("4BD8D571-6D19-48D3-BE97-422220080E43", "a0c69a99-21c8-4671-8703-7934162fcf1d");
- "Pictures" = @("33E28130-4E1E-4676-835A-98395C3BC3BB", "0ddd015d-b06c-45d5-8c4c-f59713854639");
- "Videos" = @("18989B1D-99B5-455B-841C-AB7C74E4DDFC", "35286a68-3c57-41a1-bbb1-0eae73d76c95");
- }
- $Signature = @{
- Namespace = "WinAPI"
- Name = "KnownFolders"
- Language = "CSharp"
- MemberDefinition = @"
- [DllImport("shell32.dll")]
- public extern static int SHSetKnownFolderPath(ref Guid folderId, uint flags, IntPtr token, [MarshalAs(UnmanagedType.LPWStr)] string path);
-"@
- }
- IF (-not ("WinAPI.KnownFolders" -as [type]))
- {
- Add-Type @Signature
- }
- foreach ($guid in $KnownFolders[$KnownFolder])
- {
- [WinAPI.KnownFolders]::SHSetKnownFolderPath([ref]$guid, 0, 0, $Path)
- }
- (Get-Item -Path $Path -Force ).Attributes = "ReadOnly"
-}
-[hashtable] $DesktopINI = @{
- "Desktop" = "",
- "[.ShellClassInfo]",
- "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769",
- "IconResource=%SystemRoot%\system32\imageres.dll,-183"
- "Documents" = "",
- "[.ShellClassInfo]",
- "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770",
- "IconResource=%SystemRoot%\system32\imageres.dll,-112",
- "IconFile=%SystemRoot%\system32\shell32.dll",
- "IconIndex=-235"
- "Downloads" = "",
- "[.ShellClassInfo]","LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798",
- "IconResource=%SystemRoot%\system32\imageres.dll,-184"
- "Music" = "",
- "[.ShellClassInfo]","LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790",
- "InfoTip=@%SystemRoot%\system32\shell32.dll,-12689",
- "IconResource=%SystemRoot%\system32\imageres.dll,-108",
- "IconFile=%SystemRoot%\system32\shell32.dll","IconIndex=-237"
- "Pictures" = "",
- "[.ShellClassInfo]",
- "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779",
- "InfoTip=@%SystemRoot%\system32\shell32.dll,-12688",
- "IconResource=%SystemRoot%\system32\imageres.dll,-113",
- "IconFile=%SystemRoot%\system32\shell32.dll",
- "IconIndex=-236"
- "Videos" = "",
- "[.ShellClassInfo]",
- "LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791",
- "InfoTip=@%SystemRoot%\system32\shell32.dll,-12690",
- "IconResource=%SystemRoot%\system32\imageres.dll,-189",
- "IconFile=%SystemRoot%\system32\shell32.dll","IconIndex=-238"
-}
-$drives = (Get-Disk | Where-Object -FilterScript {$_.BusType -ne "USB"} | Get-Partition | Get-Volume).DriveLetter
-IF ($RU)
-{
- $OFS = ", "
- Write-Host "Ваши диски: " -NoNewline
- Write-Host "$($drives | Sort-Object -Unique)" -ForegroundColor Yellow
- $OFS = " "
-}
-else
-{
- $OFS = ", "
- Write-Host "`nYour drives: " -NoNewline
- Write-Host "$($drives | Sort-Object -Unique)" -ForegroundColor Yellow
- $OFS = " "
-}
-# Desktop
-# Рабочий стол
-IF ($RU)
-{
- Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
- Write-Host "`"Рабочий стол`"" -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the drive letter in the root of which the " -NoNewline
- Write-Host "`"Desktop`" " -ForegroundColor Yellow -NoNewline
- Write-Host "folder will be created."
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $drive = Read-Host -Prompt " "
- IF ($drives -eq $drive)
- {
- $drive = $(${drive}.ToUpper())
- $DesktopFolder = "${drive}:\Desktop"
- $DesktopReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Desktop
- IF ($DesktopReg -ne $DesktopFolder)
- {
- IF (-not (Test-Path -Path $DesktopFolder))
- {
- New-Item -Path $DesktopFolder -ItemType Directory -Force
- }
- KnownFolderPath -KnownFolder Desktop -Path $DesktopFolder
- New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{754AC886-DF64-4CBA-86B5-F7FBF4FBCEF5}" -PropertyType ExpandString -Value $DesktopFolder -Force
- Set-Content -Path "$DesktopFolder\desktop.ini" -Value $DesktopINI["Desktop"] -Encoding Unicode -Force
- (Get-Item -Path "$DesktopFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
- (Get-Item -Path "$DesktopFolder\desktop.ini" -Force).Refresh()
- }
- }
- elseif ([string]::IsNullOrEmpty($drive))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
- Write-Host "Введите букву диска."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
- Write-Host "Type the drive letter."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($drives -eq $drive)
-# Documents
-# Документы
-IF ($RU)
-{
- Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
- Write-Host "`"Документы`"" -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the drive letter in the root of which the " -NoNewline
- Write-Host "`"Documents`" " -ForegroundColor Yellow -NoNewline
- Write-Host "folder will be created."
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $drive = Read-Host -Prompt " "
- IF ($drives -eq $drive)
- {
- $drive = $(${drive}.ToUpper())
- $DocumentsFolder = "${drive}:\Documents"
- $DocumentsReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Personal
- IF ($DocumentsReg -ne $DocumentsFolder)
- {
- IF (-not (Test-Path -Path $DocumentsFolder))
- {
- New-Item -Path $DocumentsFolder -ItemType Directory -Force
- }
- KnownFolderPath -KnownFolder Documents -Path $DocumentsFolder
- New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" -PropertyType ExpandString -Value $DocumentsFolder -Force
- Set-Content -Path "$DocumentsFolder\desktop.ini" -Value $DesktopINI["Documents"] -Encoding Unicode -Force
- (Get-Item -Path "$DocumentsFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
- (Get-Item -Path "$DocumentsFolder\desktop.ini" -Force).Refresh()
- }
- }
- elseif ([string]::IsNullOrEmpty($drive))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
- Write-Host "Введите букву диска."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
- Write-Host "Type the drive letter."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($drives -eq $drive)
-# Downloads
-# Загрузки
-IF ($RU)
-{
- Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
- Write-Host "`"Загрузки`"" -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the drive letter in the root of which the " -NoNewline
- Write-Host "`"Downloads`" " -ForegroundColor Yellow -NoNewline
- Write-Host "folder will be created."
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $drive = Read-Host -Prompt " "
- IF ($drives -eq $drive)
- {
- $drive = $(${drive}.ToUpper())
- $DownloadsFolder = "${drive}:\Downloads"
- $DownloadsReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
- IF ($DownloadsReg -ne $DownloadsFolder)
- {
- IF (-not (Test-Path -Path $DownloadsFolder))
- {
- New-Item -Path $DownloadsFolder -ItemType Directory -Force
- }
- KnownFolderPath -KnownFolder Downloads -Path $DownloadsFolder
- New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{7D83EE9B-2244-4E70-B1F5-5393042AF1E4}" -PropertyType ExpandString -Value $DownloadsFolder -Force
- Set-Content -Path "$DownloadsFolder\desktop.ini" -Value $DesktopINI["Downloads"] -Encoding Unicode -Force
- (Get-Item -Path "$DownloadsFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
- (Get-Item -Path "$DownloadsFolder\desktop.ini" -Force).Refresh()
- # Microsoft Edge
- $edge = (Get-AppxPackage "Microsoft.MicrosoftEdge").PackageFamilyName
- New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\$edge\MicrosoftEdge\Main" -Name "Default Download Directory" -PropertyType String -Value $DownloadsFolder -Force
- }
- }
- elseif ([string]::IsNullOrEmpty($drive))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
- Write-Host "Введите букву диска."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
- Write-Host "Type the drive letter."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($drives -eq $drive)
-# Music
-# Музыка
-IF ($RU)
-{
- Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
- Write-Host "`"Музыка`"" -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the drive letter in the root of which the " -NoNewline
- Write-Host "`"Music`" " -ForegroundColor Yellow -NoNewline
- Write-Host "folder will be created."
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $drive = Read-Host -Prompt " "
- IF ($drives -eq $drive)
- {
- $drive = $(${drive}.ToUpper())
- $MusicFolder = "${drive}:\Music"
- $MusicReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "My Music"
- IF ($MusicReg -ne $MusicFolder)
- {
- IF (-not (Test-Path -Path $MusicFolder))
- {
- New-Item -Path $MusicFolder -ItemType Directory -Force
- }
- KnownFolderPath -KnownFolder Music -Path $MusicFolder
- New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{A0C69A99-21C8-4671-8703-7934162FCF1D}" -PropertyType ExpandString -Value $MusicFolder -Force
- Set-Content -Path "$MusicFolder\desktop.ini" -Value $DesktopINI["Music"] -Encoding Unicode -Force
- (Get-Item -Path "$MusicFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
- (Get-Item -Path "$MusicFolder\desktop.ini" -Force).Refresh()
- }
- }
- elseif ([string]::IsNullOrEmpty($drive))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
- Write-Host "Введите букву диска."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "The disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
- Write-Host "Type the drive letter."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($drives -eq $drive)
-# Pictures
-# Изображения
-IF ($RU)
-{
- Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
- Write-Host "`"Изображения`"" -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the drive letter in the root of which the " -NoNewline
- Write-Host "`"Pictures`" " -ForegroundColor Yellow -NoNewline
- Write-Host "folder will be created."
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $drive = Read-Host -Prompt " "
- IF ($drives -eq $drive)
- {
- $drive = $(${drive}.ToUpper())
- $PicturesFolder = "${drive}:\Pictures"
- $PicturesReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "My Pictures"
- IF ($PicturesReg -ne $PicturesFolder)
- {
- IF (-not (Test-Path -Path $PicturesFolder))
- {
- New-Item -Path $PicturesFolder -ItemType Directory -Force
- }
- KnownFolderPath -KnownFolder Pictures -Path $PicturesFolder
- New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{0DDD015D-B06C-45D5-8C4C-F59713854639}" -PropertyType ExpandString -Value $PicturesFolder -Force
- Set-Content -Path "$PicturesFolder\desktop.ini" -Value $DesktopINI["Pictures"] -Encoding Unicode -Force
- (Get-Item -Path "$PicturesFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
- (Get-Item -Path "$PicturesFolder\desktop.ini" -Force).Refresh()
- }
- }
- elseif ([string]::IsNullOrEmpty($drive))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
- Write-Host "Введите букву диска."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nThe disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
- Write-Host "Type the drive letter."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($drives -eq $drive)
-# Videos
-# Видео
-IF ($RU)
-{
- Write-Host "`nВведите букву диска, в корне которого будет создана папка для " -NoNewline
- Write-Host "`"Видео`"" -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
-}
-else
-{
- Write-Host "`nType the drive letter in the root of which the " -NoNewline
- Write-Host "`"Videos`" " -ForegroundColor Yellow -NoNewline
- Write-Host "folder will be created."
- Write-Host "`nPress Enter to skip" -NoNewline
-}
-Do
-{
- $drive = Read-Host -Prompt " "
- IF ($drives -eq $drive)
- {
- $drive = $(${drive}.ToUpper())
- $VideosFolder = "${drive}:\Videos"
- $VideosReg = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "My Video"
- IF ($VideosReg -ne $VideosFolder)
- {
- IF (-not (Test-Path -Path $VideosFolder))
- {
- New-Item -Path $VideosFolder -ItemType Directory -Force
- }
- KnownFolderPath -KnownFolder Videos -Path $VideosFolder
- New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{35286A68-3C57-41A1-BBB1-0EAE73D76C95}" -PropertyType ExpandString -Value $VideosFolder -Force
- Set-Content -Path "$VideosFolder\desktop.ini" -Value $DesktopINI["Videos"] -Encoding Unicode -Force
- (Get-Item -Path "$VideosFolder\desktop.ini" -Force).Attributes = "Hidden", "System", "Archive"
- (Get-Item -Path "$VideosFolder\desktop.ini" -Force).Refresh()
- }
- }
- elseif ([string]::IsNullOrEmpty($drive))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nДиск $(${drive}.ToUpper()): не существует. " -ForegroundColor Yellow -NoNewline
- Write-Host "Введите букву диска."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nThe disk $(${drive}.ToUpper()): does not exist. " -ForegroundColor Yellow -NoNewline
- Write-Host "Type the drive letter."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
-}
-Until ($drives -eq $drive)
-# Save screenshots by pressing Win+PrtScr to the Desktop
-# Сохранить скриншот по Win+PrtScr на рабочем столе
-$value = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Desktop
-New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{b7bede81-df94-4682-a7d8-57a52620b86f}" -Name RelativePath -PropertyType String -Value $value -Force
-# Remove "$env:SystemDrive\PerfLogs"
-# Удалить "$env:SystemDrive\PerfLogs"
-Remove-Item $env:SystemDrive\PerfLogs -Recurse -Force -ErrorAction SilentlyContinue
-# Remove "$env:LOCALAPPDATA\Temp"
-# Удалить "$env:LOCALAPPDATA\Temp"
-Remove-Item $env:LOCALAPPDATA\Temp -Recurse -Force -ErrorAction SilentlyContinue
-# Remove "$env:SYSTEMROOT\Temp"
-# Удалить "$env:SYSTEMROOT\Temp"
-Restart-Service -Name Spooler -Force
-Remove-Item -Path "$env:SystemRoot\Temp" -Recurse -Force -ErrorAction SilentlyContinue
-# Show more Windows Update restart notifications about restarting
-# Показывать уведомление, когда компьютеру требуется перезагрузка для завершения обновления
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name RestartNotificationsAllowed2 -Value 1 -Force
-# Set "High performance" in graphics performance preference for app
-# Установить параметры производительности графики для отдельных приложений на "Высокая производительность"
-IF ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -ne 2 -and (Get-CimInstance -ClassName Win32_VideoController | Where-Object -FilterScript {$_.AdapterDACType -ne "Internal" -and $null -ne $_.AdapterDACType}))
-{
- IF ($RU)
- {
- Write-Host "`nВведите полные пути до .exe файлов, " -NoNewline
- Write-Host "для которого следует установить"
- Write-Host "параметры производительности графики на `"Высокая производительность`"."
- Write-Host "Пути должны быть разделены запятыми и взяты в кавычки." -ForegroundColor Yellow
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nType the full paths to .exe files for which to set"
- Write-Host "graphics performance preference to `"High performance GPU`"."
- Write-Host "The paths must be separated by commas and taken in quotes." -ForegroundColor Yellow
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- IF (Test-Path -Path "${env:ProgramFiles(x86)}\Steam")
- {
- Start-Process -FilePath "${env:ProgramFiles(x86)}\Steam\steamapps\common"
- }
- function GpuPreference
- {
- [CmdletBinding()]
- Param
- (
- [Parameter(Mandatory = $True)]
- [string[]]$apps
- )
- $apps = $apps.Replace("`"", "").Split(",").Trim()
- foreach ($app in $apps)
- {
- New-ItemProperty -Path HKCU:\Software\Microsoft\DirectX\UserGpuPreferences -Name $app -Type String -Value "GpuPreference=2;" -Force
- }
- }
- Do
- {
- $apps = Read-Host -Prompt " "
- IF ($apps -match ".exe" -and $apps -match "`"")
- {
- GpuPreference $apps
- }
- elseif ([string]::IsNullOrEmpty($apps))
- {
- break
- }
- else
- {
- IF ($RU)
- {
- Write-Host "`nПути не взяты в кавычки или не содержат ссылки на .exe файлы." -ForegroundColor Yellow
- Write-Host "Введите полные пути до .exe файлов, взяв в кавычки и разделив запятыми."
- Write-Host "`nЧтобы пропустить, нажмите Enter" -NoNewline
- }
- else
- {
- Write-Host "`nThe paths hasn't been taken in quotes or do not contain links to .exe files" -ForegroundColor Yellow
- Write-Host "Type the full paths to .exe files by quoting and separating by commas."
- Write-Host "`nPress Enter to skip" -NoNewline
- }
- }
- }
- Until ($apps -match ".exe" -and $apps -match "`"")
-}
-# Automatically adjust active hours for me based on daily usage
-# Автоматически изменять период активности для этого устройства на основе действий
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name SmartActiveHoursState -Value 1 -Force
-# Turn on automatic recommended troubleshooting
-# Устранять проблемы без запроса
-IF (-not (Test-Path -Path HKLM:\SOFTWARE\Microsoft\WindowsMitigation))
-{
- New-Item -Path HKLM:\SOFTWARE\Microsoft\WindowsMitigation -Force
-}
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsMitigation -Name UserPreference -Value 4 -Force
-# Turn on Windows Sandbox
-# Включить Windows Sandbox
-IF (Get-WindowsEdition -Online | Where-Object -FilterScript {$_.Edition -eq "Professional" -or $_.Edition -eq "Enterprise"})
-{
- IF ((Get-CimInstance -ClassName CIM_Processor).VirtualizationFirmwareEnabled -eq $true)
- {
- Enable-WindowsOptionalFeature –FeatureName Containers-DisposableClientVM -All -Online -NoRestart
- }
- else
- {
- try
- {
- IF ((Get-CimInstance –ClassName CIM_ComputerSystem).HypervisorPresent -eq $true)
- {
- Enable-WindowsOptionalFeature –FeatureName Containers-DisposableClientVM -All -Online -NoRestart
- }
- }
- catch
- {
- Write-Error "Enable Virtualization in BIOS"
- }
- }
-}
-# Turn off reserved storage
-# Отключить зарезервированное хранилище
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name BaseHardReserveSize -PropertyType QWord -Value 0 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name BaseSoftReserveSize -PropertyType QWord -Value 0 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name HardReserveAdjustment -PropertyType QWord -Value 0 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name MinDiskSize -PropertyType QWord -Value 0 -Force
-New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager -Name ShippedWithReserves -Value 0 -Force
-# Launch folder in a separate process
-# Запускать окна с папками в отдельном процессе
-New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name SeparateProcess -Value 1 -Force
-# Turn on automatic backup the system registry to the "$env:SystemRoot\System32\config\RegBack" folder
-# Включить автоматическое создание копии реестра в папку "$env:SystemRoot\System32\config\RegBack"
-New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager" -Name EnablePeriodicBackup -Value 1 -Force
-# Restart Start menu
-# Перезапустить меню "Пуск"
-Stop-Process -Name StartMenuExperienceHost -Force
-# Refresh desktop icons, environment variables and taskbar without restarting File Explorer
-# Обновить иконки рабочего стола, переменные среды и панель задач без перезапуска "Проводника"
-$UpdateEnvExplorerAPI = @{
- Namespace = "WinAPI"
- Name = "UpdateEnvExplorer"
- Language = "CSharp"
- MemberDefinition = @"
- private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);
- private const int WM_SETTINGCHANGE = 0x1a;
- private const int SMTO_ABORTIFHUNG = 0x0002;
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
- static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
- private static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, int fuFlags, int uTimeout, IntPtr lpdwResult);
- [DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = false)]
- private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
- public static void Refresh()
- {
- // Update desktop icons
- SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
- // Update environment variables
- SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, null, SMTO_ABORTIFHUNG, 100, IntPtr.Zero);
- // Update taskbar
- SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, "TraySettings");
- }
-"@
-}
-IF (-not ("WinAPI.UpdateEnvExplorer" -as [type]))
-{
- Add-Type @UpdateEnvExplorerAPI
-}
-[WinAPI.UpdateEnvExplorer]::Refresh()
-# Errors output
-# Вывод ошибок
-Write-Host "`nErrors" -BackgroundColor Red
-($Error | Where-Object -FilterScript {$_ -notmatch "Taskmgr" -and $_ -notmatch "TaskManager"} | ForEach-Object -Process {
- [PSCustomObject] @{
- Line = $_.InvocationInfo.ScriptLineNumber
- Error = $_.Exception.Message
- }
-} | Format-Table -AutoSize -Wrap | Out-String).Trim()
diff --git a/Win-10-Setup-Script-GUI.ps1 b/Win-10-Setup-Script-GUI.ps1
new file mode 100644
index 00000000..e69de29b
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index c4192631..00000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-cayman
\ No newline at end of file