From 91e6f00a96a81e70740e92de5892e192afe0b6cc Mon Sep 17 00:00:00 2001 From: Alex Hirsch Date: Mon, 17 Aug 2015 00:20:58 +0200 Subject: [PATCH] add optimize windows explorer --- lib/reg-helper.psm1 | 19 ++++++++++++++++--- ...s-pc.ps1 => optimize-windows-explorer.ps1} | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) rename scripts/{remove-user-folders-under-this-pc.ps1 => optimize-windows-explorer.ps1} (83%) diff --git a/lib/reg-helper.psm1 b/lib/reg-helper.psm1 index 7802320..e00cfc5 100644 --- a/lib/reg-helper.psm1 +++ b/lib/reg-helper.psm1 @@ -10,11 +10,24 @@ function Import-Registry($reg) { } function Takeown-Registry($key) { - # TODO works only for LocalMachine for now - $key = $key.substring(19) + # TODO does not work for all root keys yet + switch ($key.split('\')[0]) { + "HKEY_CLASSES_ROOT" { + $reg = [Microsoft.Win32.Registry]::ClassesRoot + $key = $key.substring(18) + } + "HKEY_CURRENT_USER" { + $reg = [Microsoft.Win32.Registry]::CurrentUser + $key = $key.substring(18) + } + "HKEY_LOCAL_MACHINE" { + $reg = [Microsoft.Win32.Registry]::LocalMachine + $key = $key.substring(19) + } + } # set owner - $key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows Defender\Spynet", "ReadWriteSubTree", "TakeOwnership") + $key = $reg.OpenSubKey($key, "ReadWriteSubTree", "TakeOwnership") $owner = [Security.Principal.NTAccount]"Administrators" $acl = $key.GetAccessControl() $acl.SetOwner($owner) diff --git a/scripts/remove-user-folders-under-this-pc.ps1 b/scripts/optimize-windows-explorer.ps1 similarity index 83% rename from scripts/remove-user-folders-under-this-pc.ps1 rename to scripts/optimize-windows-explorer.ps1 index 714869e..7b2eb22 100644 --- a/scripts/remove-user-folders-under-this-pc.ps1 +++ b/scripts/optimize-windows-explorer.ps1 @@ -5,6 +5,24 @@ Import-Module -DisableNameChecking $PSScriptRoot\..\lib\reg-helper.psm1 +echo "Elevating priviledges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +echo "Setting default view to This PC" +Import-Registry(@" +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] +"LaunchTo"=dword:00000000 +"@) + +# Explorer will throw an error if quick acess is removed but the default view +# has not been changed to This PC. +echo "Removing Quick Access from explorer" +Takeown-Registry("HKEY_CLASSES_ROOT\CLSID\{679f85cb-0220-4080-b29b-5540cc05aab6}\ShellFolder") +Import-Registry(@" +[HKEY_CLASSES_ROOT\CLSID\{679f85cb-0220-4080-b29b-5540cc05aab6}\ShellFolder] +"Attributes"=dword:a0600000 +"@) + echo "Removing user folders under This PC" Import-Registry(@" ; Remove Desktop From This PC