Microsoft Store è una piattaforma di distribuzione di applicazioni disponibile su Windows.
Per installare le applicazioni dallo store, non sono necessari i privilegi amministrativi.
In ottica di una certificazione aziendale, può essere necessario disabilitare l’utilizzo dello store sulle workstations, al fine di limitare il software installabile dall’utente.
RIMUOVERE MICROSOFT STORE SU WINDOWS ENTERPRISE ED EDUCATIONAL EDITION
Sulle versioni Enterprise ed Educational di Windows, è possibile rimuovere lo store e/o disabilitare le applicazioni tramite due chiavi di registro.
Impostando la chiave
0 |
HKLM:\\SOFTWARE\Policies\Microsoft\WindowsStore:DisableStoreApps |
su 1 è possibile disabilitare l’utilizzo delle applicazioni installate dallo store.
Impostando la chiave
0 |
HKLM:\\SOFTWARE\Policies\Microsoft\WindowsStore:RemoveWindowsStore |
su 1 è possibile rimuovere lo store dalla workstation.
Entrambe sono chiavi a 32 bit (DWORD) ed è ininfluente specificare la base (essendo il valore minore di 9).
Per verificare lo stato dello store e delle applicazioni con PowerShell:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$RegistryPath = "HKLM:\\SOFTWARE\\Policies\\Microsoft\\WindowsStore" if (-not (Test-Path -Path $RegistryPath)) { Write-Host "Lo store è installato e le applicazioni sono abilitate." exit 0 } if ((Get-ItemProperty -Path $RegistryPath).RemoveWindowsStore -eq 0) { Write-Host "Lo store è installato." } else { Write-Host "Lo store è stato rimosso." } if ((Get-ItemProperty -Path $RegistryPath).RemoveWindowsStore -eq 0) { Write-Host "Le applicazioni sono abilitate." } else { Write-Host "Le applicazioni sono disabilitate." } |
Per disabilitare lo store e le applicazioni con PowerShell (richiede privilegi amministrativi):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$RemoveWindowsStoreValue = '1' $DisableStoreAppsValue = '1' # $RemoveWindowsStoreValue = '0' # $DisableStoreAppsValue = '0' $RegistryPath = "HKLM:\\SOFTWARE\\Policies\\Microsoft\\WindowsStore" if (-not (Test-Path -Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } $RemoveWindowsStoreActualValue = (Get-ItemProperty -Path $RegistryPath).RemoveWindowsStore if ([string]::IsNullOrEmpty($RemoveWindowsStoreActualValue)) { New-ItemProperty -Path $RegistryPath -Name "RemoveWindowsStore" -Value $RemoveWindowsStoreValue -PropertyType DWORD -Force | Out-Null } elseif ($RemoveWindowsStoreActualValue -ne $RemoveWindowsStoreValue) { Set-ItemProperty -Path $RegistryPath -Name "RemoveWindowsStore" -Value $RemoveWindowsStoreValue -Force } $DisableStoreAppsActualValue = (Get-ItemProperty -Path $RegistryPath).DisableStoreApps if ([string]::IsNullOrEmpty($DisableStoreAppsActualValue)) { New-ItemProperty -Path $RegistryPath -Name "DisableStoreApps" -Value $DisableStoreAppsValue -PropertyType DWORD -Force | Out-Null } elseif ($DisableStoreAppsActualValue -ne $DisableStoreAppsValue) { Set-ItemProperty -Path $RegistryPath -Name "DisableStoreApps" -Value $DisableStoreAppsValue -Force } |
Per ripristinare l’utilizzo delle applicazioni o per reinstallare lo store, sarà sufficente impostare le chiavi di registro su 0, oppure rimuoverle.
In alternativa è possibile eseguire lo script utilizzando le variabili commentate (RemoveWindowsStoreValue e DisableStoreAppsValue uguali a 0).
Potrebbe essere necessario il riavvio della workstation dopo la modifica delle chiavi di registro, per rendere effettive le impostazioni.
RIMUOVERE MICROSOFT STORE SU WINDOWS PROFESSIONAL E HOME EDITION
La procedura tramite chiavi di registro non è disponibile su tutte le versioni di Windows, tuttavia è possibile utilizzare PowerShell per disinstallare lo store.
Questa procedura può essere integrata con l’utilizzo di un software di gestione delle workstations (MDM, Puppet…).
È possibile che lo store venga installato solamente per alcuni utenti.
Per visualizzare le installazioni dello store (richiede privilegi amministrativi) eseguire il comando:
0 |
PS C:\windows\system32> Get-AppxPackage -AllUsers -name "Microsoft.WindowsStore" |
Dovremmo visualizzare il seguente output:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Name : Microsoft.WindowsStore Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US Architecture : X64 ResourceId : Version : 22309.1401.2.0 PackageFullName : Microsoft.WindowsStore_22309.1401.2.0_x64__8wekyb3d8bbwe InstallLocation : C:\Program Files\WindowsApps\Microsoft.WindowsStore_22309.1401.2.0_x64__8wekyb3d8bbwe IsFramework : False PackageFamilyName : Microsoft.WindowsStore_8wekyb3d8bbwe PublisherId : 8wekyb3d8bbwe PackageUserInformation : {S-1-5-21-XXXXXXXXX-YYYYYYYYYY-ZZZZZZZZ-ABCDEF [PIZZA\marco.valle]: Installed} IsResourcePackage : False IsBundle : False IsDevelopmentMode : False NonRemovable : False IsPartiallyStaged : False SignatureKind : Store Status : Ok |
Tramite il valore di PackageUserInformation è possibile leggere per quali utenti è installato lo store.
Per rimuovere Microsoft Store per tutti gli utenti (richiede privilegi amministrativi):
0 |
Get-AppxPackage -AllUsers -Name "Microsoft.WindowsStore" | Remove-AppxPackage -AllUsers |
È possibile che venga visualizzata un’installazione nello stato “Staged” con SID dell’utente SYSTEM:
0 |
PackageUserInformation : {S-1-5-18 [S-1-5-18]: Staged} |
Non è necessario rimuovere lo store nello stato “Staged”, poiché in questo caso non è disponibile all’utente.
Si può filtrare lo stato dello store in modo da visualizzare solo le effettive installazioni con il comando:
0 |
Get-AppxPackage -AllUsers -Name "Microsoft.WindowsStore" | ForEach-Object { if ($_.PackageUserInformation.InstallState -eq "Installed") { $_ } } |
REINSTALLARE MICROSOFT STORE SU WINDOWS PROFESSIONAL E HOME EDITION
In rete sono disponibili diverse guide che suggeriscono il seguente comando per registrare nuovamente Windows Store tra le applicazioni installate:
0 |
Get-AppxPackage -AllUsers -Name Microsoft.WindowsStore | Foreach { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" } |
Disinstallando il pacchetto non sarà più disponibile nella lista restituita da Get-AppxPackage, perciò l’esecuzione di questo comando risulterebbe inefficace.
Per reinstallare Microsoft Store, dopo la sua rimozione, è necessario procurarsi il pacchetto Msixbundle ed installarlo tramite interfaccia grafica o tramite PowerShell.
Andare al seguente link
Scaricare in locale l’ultima versione di tutti i pacchetti, stando attenti a selezionare l’architettura corretta per il processore della workstation.
Durante la stesura di questo tutorial per Windows x64 sono stati scaricati i seguenti pacchetti:
– Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe.Appx
– Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe.Appx
– Microsoft.UI.Xaml.2.8_8.2306.22001.0_x64__8wekyb3d8bbwe.Appx
– Microsoft.VCLibs.140.00_14.0.32530.0_x64__8wekyb3d8bbwe.Appx
– Microsoft.WindowsStore_22309.1401.2.0_neutral_~_8wekyb3d8bbwe.Msixbundle
Potrebbe essere sufficiente installare solamente il pacchetto Msixbundle “Microsoft.WindowsStore”, tuttavia è preferibile installare anche le dipendenze, per accertarsi che lo store venga installato correttamente.
Per l’installazione tramite interfaccia grafica è sufficiente fare doppio click sul file e seguire gli step suggeriti.
Si consiglia di installare prima le dipendenze ed infine lo store.
Di default, non sono necessari i privilegi amministrativi per installare Windows Store tramite interfaccia grafica.
In alternativa, è possibile utilizzare il seguente script in PowerShell (richiede i privilegi amministrativi):
0 1 2 3 4 5 6 7 |
$global:ProgressPreference = 'SilentlyContinue' $AppxFolderPath = "C:\\Path\\alla\\cartella\\che\\contiene\\i\\pacchetti\\Appx\\e\\Msixbundle" Get-ChildItem $AppxFolderPath -Filter *.Appx | Foreach-Object { Add-AppxProvisionedPackage -Online -SkipLicense -PackagePath (Join-Path -Path $AppxFolderPath -ChildPath $_) | Out-Null } Get-ChildItem $AppxFolderPath -Filter *.Msixbundle | Foreach-Object { Add-AppxProvisionedPackage -Online -SkipLicense -PackagePath (Join-Path -Path $AppxFolderPath -ChildPath $_) | Out-Null } |
Il flag -Online serve per indicare di aggiungere il pacchetto alla corrente installazione di Windows.
DISABILITARE L’INSTALLAZIONE DEL MICROSOFT STORE AGLI UTENTI NON AMMINISTRATIVI
Di default su Windows non sono necessari i privilegi amministrativi per installare i pacchetti Appx e Msixbundle.
Perciò qualsiasi utente può reinstallarsi lo store, senza bisogno di avere privilegi particolari.
È possibile tramite una chiave di registro disabilitare la possibilità agli utenti non amministratori di installare i pacchetti Appx e Msixbundle.
Se la chiave HKLM:\\SOFTWARE\Policies\Microsoft\Windows\Appx:BlockNonAdminUserInstall è impostata su 1, solo gli amministratori potranno installare i pacchetti Appx e Msixbundle.
La chiave è a 32 bit (DWORD) ed è ininfluente specificare la base.
Per verificare i privilegi necessari per installare i pacchetti Appx e Msixbundle con PowerShell eseguire:
0 1 2 3 4 5 6 7 8 9 10 |
$RegistryPath = "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Appx" if (-not (Test-Path -Path $RegistryPath)) { Write-Host "Privilegi amministrativi NON richiesti per installare i pacchetti Appx e Msixbundle." exit 0 } $BlockNonAdminUserInstallActualValue = (Get-ItemProperty -Path $RegistryPath).BlockNonAdminUserInstall if ($BlockNonAdminUserInstallActualValue -eq 0) { Write-Host "Privilegi amministrativi NON richiesti per installare i pacchetti Appx e Msixbundle." } else { Write-Host "Privilegi amministrativi richiesti per installare i pacchetti Appx e Msixbundle." } |
Per impedire agli utenti non amministratori di installare i pacchetti Appx e Msixbundle con PowerShell:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
$BlockNonAdminUserInstallValue = '1' # $BlockNonAdminUserInstallValue = '0' $RegistryPath = "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Appx" if (-not (Test-Path -Path $RegistryPath)) { New-Item -Path $RegistryPath -Force | Out-Null } $BlockNonAdminUserInstallActualValue = (Get-ItemProperty -Path $RegistryPath).BlockNonAdminUserInstall if ([string]::IsNullOrEmpty($BlockNonAdminUserInstallActualValue)) { New-ItemProperty -Path $RegistryPath -Name "BlockNonAdminUserInstall" -Value $BlockNonAdminUserInstallValue -PropertyType DWORD -Force | Out-Null } elseif ($BlockNonAdminUserInstallActualValue -ne $BlockNonAdminUserInstallValue) { Set-ItemProperty -Path $RegistryPath -Name "BlockNonAdminUserInstall" -Value $BlockNonAdminUserInstallValue -Force } |
Per riabilitare la possibilità agli utenti senza privilegi amministrativi di installare i pacchetti Appx e Msixbundle, sarà sufficiente impostare la chiave di registro su 0, oppure rimuoverla.
In alternativa è possibile eseguire lo script utilizzando la variabile commentata (BlockNonAdminUserInstallValue uguale a 0).
L’installazione di un pacchetto Appx o Msixbundle da utente non privilegiato, dopo aver impostato la chiave di registro, causerà un errore di permessi.
0 commenti