为何管理员权限的C#程序无法修改音频设备注册表项,而注册表编辑器可以
C#修改音频设备注册表项时遇权限异常问题
我在C#中尝试启用音频设备时,抛出异常:System.Security.SecurityException: 'Requested registry access is not allowed.'。仅读取注册表项可正常执行,说明路径无误。即使以管理员身份运行该C#程序,问题仍存在。
代码片段如下:
string baseKeyName = device.RegistryPath; RegistryKey localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); RegistryKey? regKey = localMachine.OpenSubKey(baseKeyName, true); // System.Security.SecurityException: 'Requested registry access is not allowed.' if (regKey == null) return false; // 设为false(只读)时能正常获取regKey regKey.SetValue("DeviceState", deviceState, RegistryValueKind.DWord); regKey.Close();
但在Registry Editor(注册表编辑器)中执行相同操作却完全正常。请问为何C#程序无法获得相应权限?
更新内容
- 更新1:已尝试
RegistryView.Registry64和RegistryView.Registry32(后者无法找到注册表项),均未解决问题。即使以管理员运行,仍无法修改(仅读取正常)。 - 更新2:本不抱期望,因为已尝试过“以管理员身份运行”,但在清单中添加
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />也无济于事。
相关主题
- 通过Win32 API程序化启用/禁用设备
- Windows系统启用/禁用麦克风教程
- 程序化启用录音设备
内容的提问来源于stack exchange,提问作者Horst Walter
相关产品推荐
相关产品推荐

