Soundschema in Windows über Register ändern


0

Wie kann ich das Soundschema für vorhandene Benutzer in "Kein Sound" ändern, indem ich die Registrierung bearbeite? Ich erstelle eine .reg-Datei mit allen Optimierungen, die ich für frisch installierte Fenster benötige, aber ich bin mit dem Ändern des Klangschemas festgefahren.

Antworten:


1

Das Schema zu ändern ist relativ einfach. Allerdings muss man dann sich bewerben das neue Schema, das ein bisschen mehr beteiligt ist.

Das Schema "No Sounds" hat den Namen .None; Sie können dies durch Erkunden sehen HKEY_CURRENT_USER\AppEvents\Schemes\Names.

Das ausgewählte Schema ist um HKEY_CURRENT_USER\AppEvents\Schemes, die standardmäßig auf .Default. Sie können also das ausgewählte Schema festlegen, indem Sie dies auf ändern .None:

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

Hiermit wird (technisch) das ausgewählte Schema festgelegt. Sie können dies überprüfen, indem Sie in den Einstellungen für Sounds nachsehen, dass das No Sounds Schema ist ausgewählt. Die Ereignissounds werden jedoch weiterhin abgespielt, und zwar weil das ausgewählte Schema nicht abgespielt wurde angewendet .

Um ein Soundschema anzuwenden, ist die entsprechende Aktion:

  • Für jede App passende Veranstaltung HKEY_CURRENT_USER\AppEvents\Schemes\Apps\*\*Kopieren Sie den Unterschlüssel für den neuen Schemanamen über den aufgerufenen Unterschlüssel .Current.

Wenn Sie beispielsweise das No Sounds-Schema auf das System Exclamation-Ereignis anwenden möchten, kopieren Sie es HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.None Über HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Current.

In Ihrem Fall können Sie jedoch einfach alle Werte löschen, da Sie ein Thema ohne Sounds anwenden. Dies kann durch einen Einzeiler erreicht werden:

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

Schritt für Schritt:

  • Get-ChildItem -Path "HKCU:\AppEvents\Schemes\Apps" Ruft alle Apps ab.
  • Get-ChildItem Ruft alle App-Ereignisse ab.
  • Get-ChildItem Ruft alle App-Ereignis-Soundeinstellungen für jedes Schema ab.
  • Where-Object {$_.PSChildName -eq ".Current"} Wählt alle aktuell angewendeten Soundeinstellungen für App-Ereignisse aus.
  • Set-ItemProperty -Name "(Default)" -Value "" löscht diese Klangeinstellungen.

Für ein bisschen mehr Details:

Es scheint, dass die Tasten unter HKEY_CURRENT_USER\AppEvents\Schemes\Apps sind die Apps, deren Standardwert eine Anzeigezeichenfolge ist. Die auf meinem System sind .Default ("Windows"), Explorer ("Dateiexplorer") und sapisvr ("Spracherkennung").

Die Schlüssel unter jedem App-Schlüssel sind die App-Ereignisse für diese App.

Die Tasten unter jeder App-Ereignistaste sind die Sounds, die für jedes Soundschema abgespielt werden sollen. So HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.None ist der Sound, der bei Verwendung des No Sounds-Schemas für Windows-Systemausrufe abgespielt werden soll HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Default ist der Sound, der bei Verwendung des Windows-Standardschemas für Windows-Systemausrufe abgespielt wird.

Darüber hinaus gibt es eine .Current Taste auf dieser Ebene, die der tatsächlich gespielte Ton ist. Wenn Sie in der Benutzeroberfläche ein neues Schema auswählen, werden vermutlich alle Einstellungen einzeln über das kopiert .Current Wert.


Vielen Dank für diese ausführliche Antwort. Ich werde diese Lösung etwas später ausprobieren
Bearded Beaver

0

Ich habe gerade dieses Skript erstellt. Benutzung auf eigene Gefahr;

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"

Leider hat dies bei mir unter Windows 10 Build 14393 nicht funktioniert
jippyjoe4
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.