Changelog:
Fix WSL "Not Supported" string breaking the Extra menu on systems with updated WSL versions
Override DISM language to English to avoid issues with FINDSTR on systems with non-English system languages
Fix Bulgarian keyboard layout codes
Fix line spacing on some lines
Add Enable/Disable Notification Center function
Add Enable/Disable desktop notifications function
Change tasklist filtering to hopefully work with different system languages
Change some functions that ask to restart to instead ask to sign out
Change wording from "needed" to "required" on some text
Improve WSH function
Add slight delay to image selection for lockscreen and profile image functions for a slightly improved user experience
Revamp back-end menu system
Various minor code improvements
Improve Extra menu loading time
Improve UI
Improve Beta User Creation function consistency
Fix AutoLogon not working with usernames that include spaces
Fix bugs and improve code
Add profile image function
Add AutoLogon function
Add WSL related functions
Add hibernation function
Add beta user creation function
Add NVIDIA Control Panel installation function
Add keyboard language removal function
Add lockscreen blur toggle when setting lockscreen image
Update lockscreen function to always work with updated 21H2+ Windows versions
Overhaul UI
Fix bugs
Update README.md for v1.0
Update screenshot.png for v1.0
Script for automating a large assortment of AME related actions.


## Usage
You can download the script by going to the [latest release](https://git.ameliorated.info/Joe/Central-AME-Script/releases/latest) and downloading `Central-AME-Script.cmd` from the Downloads section.
You can download the script by going to the [latest release](https://git.ameliorated.info/Styris/amecs/releases/latest) and selecting `amecs.zip` from the **Downloads** section. Once downloaded, simply extract `amecs.zip` and run `amecs.cmd`.
As part of the amelioration process, certain UI elements, such as the **Region and language** page in Windows Settings, have been removed, and require alternative ways to execute the tasks. This script fills in those gaps, and allows for automating a large variety of customization tasks.
If you prefer manually executing commands for some of these tasks without a script, you can go through the step-by-step guides on [AME Guides](https://t.me/AMEGuides).
## Primary Functions
There are many actions in AME that require commands, the following functions essentially work as an interactive user interface for those.
There are a variety of tasks you can easily perform with amecs. Below, we provide an explanation for each of them, as well as the commands underlying the features.
#### Username/Password
@ -24,36 +30,50 @@ This function allows for changing the user's username or password.
At its core, the following command is used for changing the username:
wmic useraccount where "name='<currentUsername>'" rename '<newUsername>'
wmic useraccount where "name='<User'sUsername>'" rename '<NewUsername>'
Similarly, the following command is used for changing the password:
net user "<currentUsername>" "<newPassword>"
net user "<User'sUsername>" "<NewPassword>"
#### Lockscreen Image
This function allows for changing the lockscreen image. This is a modified version of [LoganDark's lockscreen-img script](https://git.ameliorated.info/LoganDark/lockscreen-img).
This function allows for changing the lockscreen image.
It works by taking ownership of the existing profile image files, and replacing them with the new image supplied by the user.
This is a modified version of [LoganDark's lockscreen-img script](https://git.ameliorated.info/LoganDark/lockscreen-img).
It works by taking ownership of the existing lockscreen image files, and replacing them with the new image supplied by the user.
#### Profile Image
This function allows for changing the user's profile image (PFP).
It does this by taking ownership of the existing profile image files, and replacing them with the new image supplied by the user. Several necessary registry changes are made as well.
This is a modified version of [LoganDark's profile-img script](https://git.ameliorated.info/LoganDark/profile-img).
#### User Elevation
This function allows for elevating the user to administrator. Elevating the user disables the password requirement when trying to run an executable as administrator. However, this has large security implications, thus why it is not the default setting.
This function allows for elevating or de-elevating the user to or from administrator. Elevating the user disables the password requirement when trying to run an executable as administrator. However, this has large security implications, thus why it is not the default setting.
At its core, it uses the following command:
net localgroup administrators "<currentUsername>" /add
net localgroup administrators "<User'sUsername>" /add
Or the following for de-elevating the user:
net localgroup administrators "<User'sUsername>" /delete
#### Display Language
This function allows for changing the user's display language.
Firstly, it prompts the user to download a portion of a ~5.5GB language pack ISO file. Unfortunately, Microsoft no longer publicly distributes individual language pack files, so this is necessary.
Firstly, it prompts the user to download a portion of a \~5.5GB language pack ISO file. Unfortunately, Microsoft no longer publicly distributes individual language pack files, so this is necessary.
Once the ISO is downloaded, it extracts the ISO file, and installs the language pack for the selected display language using the following commands:
7z e -y -o"<ScriptPath>\LangPacks" "<Script Path>\LangPacks.ISO" x64\langpacks\*.cab
The Language/region ID and Keyboard identifier for a given language can be found [here](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/available-language-packs-for-windows?view=windows-11#language-packs) and [here](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-language-pack-default-values?view=windows-11) respectively.
The Language/region ID and Keyboard identifier for a given language can be found [here](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/available-language-packs-for-windows?view=windows-11#language-packs) amd [here](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-language-pack-default-values?view=windows-11) respecively.
To remove a keyboard language, it fetches the existing language list, filters out the selected language, and sets the modified language list.
#### Username Login Requirement
@ -90,25 +112,117 @@ Or the following for enabling the requirement:
This function allows for installing a WSL distribution.
Firstly, it fetches the distro download link from this git repository (`links.txt`), and downloads the distro from said link\*. Once the distro is downloaded, the script extracts and places the distro in `<User's Local AppData Folder>\AME-WSL`, and subsequently installs the distro by running the distro's `.exe` file contained within.
After the distro has been installed, the script sends several commands to the distro that apply the username and password(s) supplied by the user.
\*If the distro link includes apps.microsoft.com, [store.rg-adguard.net](https://store.rg-adguard.net/) is used to fetch the download link.
##### Remove WSL Distro
This function allows for removing a WSL distribution.
At its core, it does this by unregistering the distro using the following command:
WSL --unregister <WSLDistro>
And subsequently removing the distro's installation files located in `<User's Local AppData Folder>\AME-WSL`.
#### Hibernation
#### Windows Script Host
This function allows for enabling or disabling the hibernation option in Windows.
At its core, the following commands are used:
powercfg /HIBERNATE /TYPE FULL
Or the following for disabling hibernation:
powercfg /HIBERNATE OFF
#### Notification Center
This function allows for enabling or disabling the Notification Center in the bottom right of the taskbar.
This function allows for creating partially functional and pre-configured users in Windows AME.
To do this, it uses a standard user creation command, followed by many registry edits to make the new user usable.
#### NVIDIA Control Panel
This function allows for installing or uninstalling NVIDIA Control Panel. This is useful since NVIDIA Control Panel no longer properly installs during a driver installation* due to it using an APPX deployment (Not supported in AME).
Firstly, it fetches the store link from this git repository (`links.txt`), and fetches the download link from [store.rg-adguard.net](https://store.rg-adguard.net/). Afterwards, it downloads NVIDIA Control Panel from said link\*. Once NVIDIA Control Panel is downloaded, the script extracts and places it in `<System Drive>\Program Files\NVIDIA Control Panel`, and subsequently creates a start menu shortcut for it.
For removal, it simply removes the `<System Drive>\Program Files\NVIDIA Control Panel` directory, as well as the start menu shortcut.
Note: Even though NVIDIA Control Panel installation failes during a driver installation, it still creates the necessary NVIDIA Control Panel files in `<System Drive>\Program Files\WindowsApps`. If this is the case, the script will attempt to use those files instead of downloading them.
\*Standard drivers do not have this issue, however those have been discontinued by NVIDIA.
## Known Issues
Some keyboard languages may not work, and a few are improperly tagged. This will be fixed in a future release.
Some keyboard languages may not work, and a few are improperly tagged.