我try 在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; // with false (read only) I get the regKey
                
regKey.SetValue("DeviceState", deviceState, RegistryValueKind.DWord);
regKey.Close();

Registry Editor个人中做同样的事情,效果很好.

你知道为什么在C#中没有授予权限吗?

Registry editor

更新1:

我已经try 了RegistryView.Registry64RegistryView.Registry32(不交出密钥),但没有成功.即使该程序以管理员身份运行,也不可能进行更新(只读).

更新2:

我没有预料到它会起作用,因为我已经try 了"以管理员身份运行".但货单中的<requestedExecutionLevel level="highestAvailable" uiAccess="false" />个也没有帮助.


相关主题和链接

  1. Win32 API function to programmatically enable/disable device
  2. https://www.tenforums.com/tutorials/80323-enable-disable-microphone-windows.html

推荐答案

原问题How do I programmatically give ownership of a Registry Key to Administrators?

注册表访问权限问题通过以下两个答案得到解决:

  1. https://stackoverflow.com/a/38727406/356726
  2. https://stackoverflow.com/a/17047190/356726

然而,以这种方式更改声音设备会导致设备的"某种挂起",并需要重新启动.虽然从技术上讲,这对我来说不是一个解决方案,但这是另一个话题.

Csharp相关问答推荐

如何在实体框架中添加包含列表?

如何使用EF Core和.NET 8来upsert到具有多对多关系的表?

UWP应用程序try 将打包的本机.exe文件加载为C#程序集

Automapper 12.x将GUID映射到字符串

反序列化私有成员

System.Text.Json .NET 8多形态语法化

如何将FindAll()与Nuget包Interop.UIAutomationClient一起使用

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

try 链接被委派者(多播委托)时,无法将获取运算符应用于类型为';方法组&39;和方法组';的操作数

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

如何使用用于VS代码的.NET Maui扩展在我的iOS/Android设备或模拟器上进行调试?

在使用UserManager时,如何包含与其他实体的关系?

从Base64转换为不同的字符串返回相同的结果

有没有更好的方法来使用LINQ获取整行的计算组

方法加载时出现类型加载异常

修复C#Web API中的循环引用错误

Blazor检测Foreach循环内SELECT元素的更改

如何在C#中找到 struct 的对齐方式?

当两个不同的实例用作任务时,正在释放实体框架DbContext实例

ASP.NET Core Web API 授权期间生成 JWT 令牌时出错