Alterar o esquema de som no Windows através do Registro do Windows

Alterar o esquema de som no Windows através do Registro do Windows

Como posso alterar o esquema de som para “sem som” para o usuário existente editando o registro? Estou criando um arquivo .reg com todos os ajustes necessários em janelas recém-instaladas, mas não consigo alterar o esquema de som.

Responder1

Alterar o esquema é relativamente fácil. No entanto, você então terá queaplicaro novo esquema, que é um pouco mais envolvente.

O esquema "No Sounds" tem o nome .None; você pode ver isso explorando HKEY_CURRENT_USER\AppEvents\Schemes\Names.

O esquema selecionado está em HKEY_CURRENT_USER\AppEvents\Schemes, cujo padrão é .Default. Portanto, você pode definir o esquema selecionado alterando isto para .None:

New-ItemProperty -Path HKCU:\AppEvents\Schemes -Name "(Default)" -Value ".None" -Force | Out-Null

Isso definirá (tecnicamente) o esquema selecionado, que você pode verificar acessando as configurações de Sons e ver se o No Soundsesquema está selecionado. No entanto, os sons do evento ainda serão reproduzidos, e isso ocorre porque o esquema selecionado não foiaplicado.

Para aplicar um esquema de sons, a ação apropriada é:

  • Para cada correspondência de evento de aplicativo HKEY_CURRENT_USER\AppEvents\Schemes\Apps\*\*, copie a subchave do novo nome do esquema sobre a subchave chamada .Current.

Por exemplo, para aplicar o esquema No Sounds ao evento System Exclamation, você copiaria HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Noneo arquivo HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Current.

Porém, no seu caso, você pode simplesmente limpar todos os valores, já que está aplicando um tema "sem sons". Isso pode ser feito por uma linha:

Get-ChildItem -Path "HKCU:\AppEvents\Schemes\Apps" | Get-ChildItem | Get-ChildItem | Where-Object {$_.PSChildName -eq ".Current"} | Set-ItemProperty -Name "(Default)" -Value ""

Passo a passo:

  • Get-ChildItem -Path "HKCU:\AppEvents\Schemes\Apps"obtém todos os aplicativos.
  • Get-ChildItemobtém todos os eventos do aplicativo.
  • Get-ChildItemobtém todas as configurações de som de eventos do aplicativo para cada esquema.
  • Where-Object {$_.PSChildName -eq ".Current"}seleciona todas as configurações de som de eventos do aplicativo aplicadas atualmente.
  • Set-ItemProperty -Name "(Default)" -Value ""limpa essas configurações de som.

Para mais detalhes:

Parece que as chaves abaixo HKEY_CURRENT_USER\AppEvents\Schemes\Appssão os aplicativos, sendo o valor padrão uma string de exibição. Os que estão no meu sistema são .Default("Windows"), Explorer("Explorador de Arquivos") e sapisvr("Reconhecimento de Fala").

As chaves em cada chave de aplicativo são os eventos desse aplicativo.

As teclas em cada tecla de evento do aplicativo são os sons a serem reproduzidos para cada esquema de som. O mesmo HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Noneocorre com o som a ser reproduzido para a Exclamação do Sistema do Windows ao usar o esquema Sem Sons, e HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Defaulté o som a ser reproduzido para a Exclamação do Sistema do Windows ao usar o esquema Padrão do Windows.

Além disso, há uma .Currenttonalidade neste nível que é o som real tocado. Presumivelmente, quando você seleciona um novo esquema na IU, ele copia cada uma das configurações individualmente sobre o .Currentvalor.

Responder2

Acabei de criar este script. Use por sua conta e risco;

if (-Not (Test-Path 'HKCU:\AppEvents\Schemes\Names\.None'))
{ 
    New-Item -Path 'HKCU:\AppEvents\Schemes\Names' -Name '.None'
    New-ItemProperty -Path 'HKCU:\AppEvents\Schemes\Names\.None' -Name '(Default)' -Type 'String' -Value 'No Sounds'
}

Get-ChildItem -Path 'HKCU:\AppEvents\Schemes\Apps\.Default' | Select Name | ForEach-Object {
    $thing = $_.Name -replace "HKEY_CURRENT_USER", "HKCU:"
    $fullnun = "$thing\.None"
    if (-Not (Test-Path $thing))
    {
        New-Item -Path $thing -Name '.None'
        echo "$thing\.None created"
    } else {
        echo "$thing\.None already existed"
    }

    if (Test-Path($fullnun))
    {
        New-ItemProperty -Path $fullnun -Name '(Default)' -Type 'String' -Value ''
    }
}

Set-ItemProperty -Path 'hkcu:\AppEvents\Schemes' -Name "(Default)" -Type "String" -Value ".None"

Responder3

Aqui está meu código para definir esquemas de som como 'NO SOUND'

Write-Host " Setting Sound Schemes to 'No Sound' .." -foregroundcolor Gray -backgroundcolor black

$Path = "HKCU:\AppEvents\Schemes"

$Keyname = "(Default)"

$SetValue = ".None"

$TestPath = Test-Path $Path
if (-Not($TestPath -eq $True)) {
   Write-Host " Creating Folder.. " -foregroundcolor Gray -backgroundcolor black
   New-item $path -force
}

if (Get-ItemProperty -path $Path -name $KeyName -EA SilentlyContinue) {

   $Keyvalue = (Get-ItemProperty -path $Path).$keyname

   if ($KeyValue -eq $setValue) {

       Write-Host " The Registry Key Already Exists. " -foregroundcolor green -backgroundcolor black


   }
   else {

       Write-Host " Changing Key Value.. " -foregroundcolor Gray -backgroundcolor black

       New-itemProperty -path $Path -Name $keyname -value $SetValue -force # Set 'No Sound' Schemes
       Get-ChildItem -Path "HKCU:\AppEvents\Schemes\Apps" | # Apply 'No Sound' Schemes
        Get-ChildItem |
        Get-ChildItem |
        Where-Object { $_.PSChildName -eq ".Current" } |
        Set-ItemProperty -Name "(Default)" -Value ""

       Write-Host " The Registry Key Value Changed Sucessfully. " -foregroundcolor green -backgroundcolor black
   }

}
else {

   Write-Host " Creating Registry Key.. " -foregroundcolor Gray -backgroundcolor black

   New-itemProperty -path $Path -Name $keyname -value $SetValue -force
   Get-ChildItem -Path "HKCU:\AppEvents\Schemes\Apps" |
       Get-ChildItem |
       Get-ChildItem |
       Where-Object { $_.PSChildName -eq ".Current" } |
       Set-ItemProperty -Name "(Default)" -Value ""


   Write-Host " The Registry Key Created Sucessfully. " -foregroundcolor green -backgroundcolor black
}

informação relacionada