Visual Basic 2008 でレジストリ キーの特定の DWORD の値を反転する小さなプログラムを作成しています。
問題のレジストリ キーは次のとおりです。
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{91801674-82d9-459a-9358-6e5cf3d81d21}\FxProperties'
私が操作している dword は " {e0a941a0-88a2-4df5-8d6b-dd20bb06e8fb},4 "です
これは、DWORD の値を設定するために書いたコード行です。
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")
しかし、実行時に「レジストリ キー [KEY_NAME] へのアクセスが拒否されました」というUnauthorizedAccessExceptionが発生します。
管理者権限でプログラムを実行し、アプリのマニフェストを次のように変更しました。
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
しかし、それもうまくいきませんでした。そこで、いくつかのフォーラムを検索して、これを試しました:
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")
しかし、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というNullReferenceExceptionがスローされました。
プログラムをSYSTEM権限で実行しなくても、そのキーを変更できる方法はありますか?