Desabilitar "Mostrar ícones da área de trabalho" no Windows com PowerShell

1

Como desabilitar a configuração "Mostrar ícones da área de trabalho" no menu Windows 10 Desktop -> Exibir?

insira a descrição da imagem aqui

Encontrei esse script do PowerShell para verificar a configuração, mas não consegui encontrar uma maneira de definir isso programaticamente.

function Test-DesktopIconHiddenStatus {            
[CmdletBinding()]            
Param(            
)            

$shell = New-Object -ComObject "Shell.Application"            
if($shell.GetSetting("0x00004000")) {            
 Write-Host "Desktop icons are hidden"            
} else {            
 Write-Host "Desktop icons are visible"            
}            
}

Existem maneiras de desativar a área de trabalho, mas esse é outro recurso.

Meu melhor palpite até agora é olhar na direção do HKCU \ Software \ Microsoft \ Windows \ Shell \ Bags \ 1 \ Desktop , talvez a opção FFlags tenha algo a ver com isso.

Jan H
fonte

Respostas:

1

Provavelmente é um exagero para o que você está procurando. Certifique-se de reiniciar o Explorer.

function Test-DesktopIconHidden {            
  [CmdletBinding(SupportsShouldProcess=$false)]
  Param()

  Process {
    $Shell = New-Object -ComObject "Shell.Application"
    $Shell.GetSetting(0x4000)
  }
}

function Test-RegistryKeyValue {
  [CmdletBinding(SupportsShouldProcess=$false)]
  Param([Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)] [string]$Path,
        [Parameter(Position=1, Mandatory=$true, ValueFromPipeline=$true)] [string]$Value)

  Process {
    if (Test-Path $Path) {
      $Key=Get-Item -LiteralPath $Path
      if ($Key.GetValue($Value, $null) -ne $null) { $true } else { $false }
    }
    else { $false }
  }
}

$RegPath="HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
$KeyList=@(@{Name="TaskbarGlomLevel";     Value=1; Description="Combine taskbar buttons"},
           @{Name="TaskbarSmallIcons";    Value=1; Description="Use small taskbar buttons"},
           @{Name="HideFileExt";          Value=0; Description="Hide file extensions"},
           @{Name="HideIcons";            Value=0; Description="Hide Desktop icons"},
           @{Name="Hidden";               Value=1; Description="Show Hidden files"},
           @{Name="HideDrivesWithNoMedia";Value=1; Description="Show all drives"},
           @{Name="HideMergeConflicts";   Value=0; Description="Hide merge conflicts"},
           @{Name="ListviewShadow";       Value=0; Description="ListviewShadow"},
           @{Name="MMTaskbarEnabled";     Value=0; Description="MMTaskbarEnabled"},
           @{Name="SharingWizardOn";      Value=0; Description="Use Sharing Wizard"},
           @{Name="TaskbarAnimations";    Value=1; Description="TaskbarAnimations"})

for ($i=0; $i -lt $KeyList.Count; $i++) {
  if (Test-RegistryKeyValue -Path $RegPath -Value $KeyList[$i].Name) {
    if ((Get-ItemPropertyValue -Path $RegPath -Name $KeyList[$i].Name) -eq $KeyList[$i].Value) {
      Write-Verbose "$($KeyList[$i].Description) is already set"
    }
    else { Set-ItemProperty -Path $RegPath -Name $KeyList[$i].Name -Value $KeyList[$i].Value }
  }
  else { New-ItemProperty -Path $RegPath -Name $KeyList[$i].Name -Value $KeyList[$i].Value -PropertyType DWORD -Force > $null }
}

$RegPath="HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel"
$KeyList=@(@{Name="{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; Value=0; Description="My Computer icon"},
           #@{Name="{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}"; Value=0; Description="Control Panel icon"},
           @{Name="{59031a47-3f72-44a7-89c5-5595fe6b30ee}"; Value=0; Description="User Files icon"},
           @{Name="{645FF040-5081-101B-9F08-00AA002F954E}"; Value=0; Description="Recycle Bin icon"},
           @{Name="{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"; Value=0; Description="Network icon"},
           @{Name="{018D5C66-4533-4307-9B53-224DE2ED1FE6}"; Value=0; Description="Unknown icon"})

for ($i=0; $i -lt $KeyList.Count; $i++) {
  if (Test-RegistryKeyValue -Path $RegPath -Value $KeyList[$i].Name) {
    if ((Get-ItemPropertyValue -Path $RegPath -Name $KeyList[$i].Name) -eq $KeyList[$i].Value) {
      Write-Verbose "$($KeyList[$i].Description) is already set"
    }
    else { Set-ItemProperty -Path $RegPath -Name $KeyList[$i].Name -Value $KeyList[$i].Value }
  }
  else { New-ItemProperty -Path $RegPath -Name $KeyList[$i].Name -Value $KeyList[$i].Value -PropertyType DWORD -Force > $null }
}
Slogmeister Extraordinaire
fonte
Obrigado pela sua resposta elaborada, este é um material muito útil.
Jan H
0

Encontrei minha resposta na resposta de Slogmeister Extraordinaire .

Essa é a maneira mais curta de ocultar os ícones da área de trabalho

$Path="HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name "HideIcons" -Value 1
Get-Process "explorer"| Stop-Process

O script na resposta do Slogmeister Extraordinaire é muito mais agradável, faz verificações, pode criar a configuração se ela não existir, e também abrange uma variedade de outras configurações.

Jan H
fonte