Der Zugriff auf den registry-key '[KEY_NAME]' wird verweigert
Ich Schreibe ein kleines Programm in Visual Basic 2008, spiegelt die Werte des speziellen DWORDs in einen registry-Schlüssel
Den registry-Schlüssel in der Frage ist:
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{91801674-82d9-459a-9358-6e5cf3d81d21}\FxProperties'
Den dword-ich bin zu manipulieren ist "{e0a941a0-88a2-4df5-8d6b-dd20bb06e8fb},4"
Dies ist die Linie der code, den ich schrieb, um den DWORD-Wert:
Dim keyString = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{91801674-82d9-459a-9358-6e5cf3d81d21}\FxProperties"
My.Computer.Registry.SetValue(keyString, "{ad75efc0-8f48-4285-bfa8-40fb036cdab2},2", "00000000")
Aber ich bekomme UnauthorizedAccessException zur Laufzeit, die besagt, dass "der Zugriff auf den registry-Schlüssel [KEY_NAME] verweigert."
Lief ich das Programm mit Administrator-rechten geändert manifest der app enthalten:
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Aber das hat nicht funktioniert entweder. So suchte ich ein paar Foren und habe versucht diese:
Dim rkLM As RegistryKey = Registry.LocalMachine
Dim pRegKey As RegistryKey = rkLM.OpenSubKey("\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{91801674-82d9-459a-9358-6e5cf3d81d21}\FxProperties", True)
pRegKey.SetValue("{ad75efc0-8f48-4285-bfa8-40fb036cdab2},2", "00000000")
Aber das warf eine NullReferenceException bei mir die Meldung "Objektverweis nicht auf eine Instanz eines Objekts."
Gibt es eine Möglichkeit, die ich ändern kann, daß dieser Schlüssel, ohne dass mein Programm mit SYSTEM Privilegien?
InformationsquelleAutor Vinayak | 2012-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie wahrscheinlich versuchen, mit
requireAdministrator
in Ihrem manifest, weilhighestAvailable
kann eigentlich nicht sein administrator.Ich würde auch versuchen die Angabe des Datentyps (in deinem Fall denke ich, ist es Binär):
Jedoch der Wert, den Sie festlegen können müssen, um ein byte-array (etwas, was man versuchen könnte)
requireAdministrator
aber das hat nicht funktioniert. Ich habe eine Lösung gefunden aber. Ich werde es nach ein paar Stunden nach der selbst-Antwort-Frist entfernt wird.InformationsquelleAutor Matt Wilko
Vielen Dank Matt, ich habe versucht mit es mit
requireAdministrator
als gut, aber das hat auch nicht geholfen. Wie auch immer, ich fand die Lösung für dieses und es scheint, das problem Liege mit den Berechtigungen auf den Registrierungsschlüssel, ich war versucht zu ändern.Full Control
Zugang wurde nur gegeben, um die TrustedInstaller Gruppe, so dass ich gewährtFull Control
für die Benutzer in der Administratoren Gruppe.Begann ich, "regedit", mit SYSTEM Privilegien mit Sysinternals' PsExec tool
[
psexec -si regedit
] und navigiert zu dem Schlüssel, die ich wünschte, zu manipulieren mit meinem Programm und verwendet [Edit -> Permissions
], um den Schreibzugriff auf mich.Danach, meinen code gearbeitet und so:
konnte erfolgreich klappen Sie den Wert des DWORD. Obwohl das funktionierte, würde ich gerne wissen, ob es einen Weg gibt, dies zu tun, ohne dass Sie manuell ändern Sie die Berechtigungen für den Registrierungsunterschlüssel.
Ich habe ein ähnliches problem und die Lösung dafür in C# gegeben hier, aber ich konnte nicht erfolgreich konvertieren von C# - code, dort erwähnt zu VB.NET code. Könnten Sie helfen mit, dass?
Ich war in der Lage, ändern Sie die Werte in der registry, aber das hat nichts tun, außer aktivieren/deaktivieren Sie das zugehörige Kontrollkästchen in der Lautsprecher-Eigenschaften-Fenster.
Ich musste neu starten der audio-service seine Arbeit machen
net stop audiosrv
dannnet start audiosrv
oder der ServiceController-Klasse.Danke. Ich werde es ausprobieren und sehen, ob es funktioniert. Übrigens, zu Ihrer Frage, ich denke, dass ich herausfand, welche Tasten zum ändern der Registrierung, indem Sie Start " Process Monitor und dann aktivieren/deaktivieren, eine Verbesserung von Wirkung und Betrachtung der Ergebnisse im Prozess zu Überwachen, um zu sehen, was sich geändert hat.
Ja, ich habe mit der gleichen Methode und stecken auf das gleiche problem (schreiben der Werte in der Registrierung). Deine Antwort hat mir sehr geholfen! Ich bin zwar immer noch nicht finden, wo ich es bekommen Effekte-Namen und manipulieren Ihre Werte. Es gibt nichts, über das web. Ich habe gerade eine Ahnung, dass hat etwas mit sAPO, aber nachdem das hantieren über Sie, ich konnte nicht mehr tun, als aufzuzählen, die MMDevices.
InformationsquelleAutor Vinayak
Hier ist die vb.net code für die c# - Verbindung, die nachstehend aufgeführt sind. Sie müssen einen Verweis auf System.Sicherheit.
InformationsquelleAutor j2associates
Ich hatte das gleiche problem und die Einstellung
requireAdministrator
hat nicht geholfen. Dann erkannte ich VS2010 fragte mich nie neu starten mit Administratorrechten. Ich geschlossen und wieder geöffnet VS2010, lief das Programm, und es fragte mich zu starten mit Administratorrechten. Ich bin verwendet, um die änderung zurequireAdministrator
und es fragt mich, neu starten, beim nächsten mal, wenn ich debug.So, um zu klären,
requireAdministrator
hat helfen, aber erfordert einen manuellen Neustart des VS2010 (oder führen Sie einfach VS2010 als Administrator).InformationsquelleAutor user287848