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.
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:
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:
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
MfG
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.
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
MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4786534388
Url: https://administrator.de/contentid/4786534388
Ausgedruckt am: 24.11.2024 um 22:11 Uhr
2 Kommentare
Neuester Kommentar
Administratoren haben dort keinen expliziten Vollzugriff, können dort aber trotzdem Werte setzen.
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.
Manual
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)
Uk.
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()
}
OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)
Uk.