anfaengerit
Goto Top

PS Skript zum Deaktivieren des Exklusiven Modus (Audio)

Guten Morgen an alle,

ich bin grade dabei ein PowerShell GUI-Skript zu schreiben um mithilfe eines Knopfdrucks, den Exklusiven Modus (siehe bild) für alle Audio Geräte zu deaktivieren.
inkedscreenshot 2022-11-28 113555

Damit habe ich auch keinerlei Probleme, das einzige Hindernis woran ich scheitere sind die jeweiligen rechte um diesen Key im Regedit zu ändern.

Code um den Key im Regedit zu ändern:
$Registry_Key = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\*\*\"  
Get-ItemProperty -path $Registry_Key -name "{b3f8fa53-0004-438e-9003-51a46e139bfc},3" | % {Set-ItemProperty -path $_.PSPath -name "{b3f8fa53-0004-438e-9003-51a46e139bfc},3" -type Dword -value 0}  

Vereinfacht gesagt sucht der Code in allen Sub Ordnern von Render ob es den Key "{b3f8fa53-0004-438e-9003-51a46e139bfc},3" gibt und wenn ja, wird dieser auf den Wert 0 umgeschrieben, also den Exklusiven Modus zu deaktivieren.

Dabei kommen natürlich diverse Fehlermeldungen, dass der gesuchte Key nicht gefunden wurde, dies ist normal und daher nicht schlimm, mein Problem ist jetzt aber, wenn der Key doch in einem Sub Ordner gefunden wird, erscheint die Fehlermeldung "Der angeforderte Registrierungszugriff ist unzulässig."

Code mit Fehlermeldung für den gefundenen Key im Regedit:
Set-ItemProperty : Der angeforderte Registrierungszugriff ist unzulässig.
In Zeile:2 Zeichen:93
+ ... fc},3" | % {Set-ItemProperty -path $_.PSPath -name "{b3f8fa53-0004-43 ...  
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...b61}\Properties:String) [Set-ItemProperty], 
    SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyC 
   ommand

Kommen wir nun zu meiner Frage. Kann mir wer sagen, was ich noch hinzufügen muss um die Benötigten Rechte zu bekommen um diesen Key im Regedit zu verändern und ggf. die Rechte wieder so zu verändern das diese wieder auf "Standard" sind?

Kleine Info am Rande: Den Key kann ich manuell im Regedit selbst ändern, also fehlen mir nur die Rechte im Skript. (Auch wenn ich das Skript Als Administrator ausführe, kommt die Fehlermeldung mit dem Unzulässigen Zugriff).

Vielen Danke schonmal im Voraus face-smile
MfG

Content-ID: 4786534388

Url: https://administrator.de/contentid/4786534388

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

4400667902
Lösung 4400667902 28.11.2022 aktualisiert um 13:25:48 Uhr
Goto Top
Administratoren haben dort keinen expliziten Vollzugriff, können dort aber trotzdem Werte setzen.

screenshot

Set-ItemProperty fordert aber fehlende zusätzliche Rechte an, deswegen schlägt der Zugriff mit dem CMDLet fehl. Das lässt sich mit explizitem Angeben der nötigen Rechte zum reinen Setzen des Wertes beheben.
if(!(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(544)){start powershell -Verb runas -ArgumentList '-File',$MyInvocation.MyCommand.Definition;exit}  
Get-Item 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\*\Properties' | %{  
    $regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($_.Name.split('\',2)[1], 'ReadWriteSubTree','SetValue')  
    $regkey.SetValue('{b3f8fa53-0004-438e-9003-51a46e139bfc},3',0,'Dword')  
    $regkey.Close()
}
Manual
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

Uk.
AnfaengerIT
AnfaengerIT 28.11.2022 um 13:49:31 Uhr
Goto Top
Ich Danke dir für diese gute Erklärung, es klappt jetzt alles so wie es soll.
Vielen Dank face-smile
MfG