Wie kann ich das Soundschema für bestehende Benutzer durch Bearbeiten der Registrierung auf „kein Ton“ ändern? Ich erstelle eine REG-Datei mit allen Optimierungen, die ich für frisch installierte Windows benötige, komme aber beim Ändern des Soundschemas nicht weiter.
Antwort1
Das Ändern des Schemas ist relativ einfach. Allerdings muss man dannanwendendas neue Schema, das etwas komplizierter ist.
Das Schema „Keine Geräusche“ hat den Namen .None
; Sie können es sehen, indem Sie erkunden HKEY_CURRENT_USER\AppEvents\Schemes\Names
.
Das ausgewählte Schema ist HKEY_CURRENT_USER\AppEvents\Schemes
, standardmäßig .Default
. Sie können das ausgewählte Schema also festlegen, indem Sie dies in ändern .None
:
New-ItemProperty -Path HKCU:\AppEvents\Schemes -Name "(Default)" -Value ".None" -Force | Out-Null
Dadurch wird (technisch) das ausgewählte Schema festgelegt. Sie können dies überprüfen, indem Sie in Ihren Soundeinstellungen nachsehen, ob das No Sounds
Schema ausgewählt ist. Die Ereignistöne werden jedoch weiterhin abgespielt, und zwar, weil das ausgewählte Schema nichtangewandt.
Um ein Soundschema anzuwenden, ist die entsprechende Aktion:
- Kopieren Sie für jedes übereinstimmende App-Ereignis
HKEY_CURRENT_USER\AppEvents\Schemes\Apps\*\*
den Unterschlüssel für den neuen Schemanamen über den Unterschlüssel mit dem Namen.Current
.
Um beispielsweise das Schema „Keine Töne“ auf das System-Ausrufezeichen-Ereignis anzuwenden, kopieren HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.None
Sie HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Current
.
In Ihrem Fall können Sie jedoch einfach alle Werte löschen, da Sie ein Design „ohne Sounds“ anwenden. Dies lässt sich mit einem Einzeiler erreichen:
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 Soundeinstellungen für App-Ereignisse für jedes Schema ab.Where-Object {$_.PSChildName -eq ".Current"}
wählt alle aktuell angewendeten App-Ereignis-Soundeinstellungen aus.Set-ItemProperty -Name "(Default)" -Value ""
löscht diese Soundeinstellungen.
Für etwas mehr Details:
Es scheint, dass die Schlüssel darunter HKEY_CURRENT_USER\AppEvents\Schemes\Apps
die Apps sind, deren Standardwert eine Anzeigezeichenfolge ist. Auf meinem System sind dies .Default
(„Windows“), Explorer
(„Datei-Explorer“) 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. Dies HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.None
ist der Sound, der für das Windows-Systemausrufezeichen abgespielt werden soll, wenn das Schema „Keine Sounds“ verwendet wird, und HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Default
der Sound, der für das Windows-Systemausrufezeichen abgespielt werden soll, wenn das Windows-Standardschema verwendet wird.
Darüber hinaus gibt es .Current
auf dieser Ebene eine Taste, die den eigentlichen Ton darstellt, der abgespielt wird. Wenn Sie in der Benutzeroberfläche ein neues Schema auswählen, kopiert es vermutlich jede der Einstellungen einzeln über den .Current
Wert.
Antwort2
Ich habe dieses Skript gerade erstellt. Die Verwendung erfolgt 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"
Antwort3
Hier ist mein Code zum Einstellen von Soundschemata auf „KEIN TON“
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
}