注册表项未在C#中提到的路径更新
string path = @"Software\Microsoft\Windows NT\CurrentVersion\Windows\";
RegistryKey myKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(path, true);
myKey.SetValue("USERProcessHandleQuota", 50000, RegistryValueKind.DWord);
myKey.Close();
Run Code Online (Sandbox Code Playgroud)
而不是在下面的路径更新给定的路径值: -
@"Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\";
Run Code Online (Sandbox Code Playgroud)
我的机器是64位,我运行的应用程序是32位.
请建议如何更新,即在上述路径地址的值Software\Microsoft,而不是Software\wow6432node.
你可以这两种方式做到这一点
RegistryView.Registry64以及OpenBaseKey.Net 4及以上版本RegOpenKeyExApi 在早期版本中调用Advapi32.dll了KEY_WOW64_64KEY标志RegistryView枚举:在64位版本的Windows上,部分注册表分别存储在32位和64位应用程序中.32位应用程序有32位视图,64位应用程序有64位视图.
使用OpenBaseKey和OpenRemoteBaseKey(RegistryHive,String,RegistryView)方法以及RegistryKey对象上的FromHandle属性时,可以指定注册表视图.
使用Registry64的代码
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
using (var subKey = baseKey.OpenSubKey("blah", RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl))
{
if (subKey != null)
{
var value = subKey.GetValue("Somekey");
}
}
}
Run Code Online (Sandbox Code Playgroud)
PInvoke使用RegOpenKeyEx和KEY_WOW64_64KEY可以在这里找到
PInvoke RegOpenKeyEx(advapi32)
注意:这两个应该允许您的32位应用程序访问完整的注册表,而不仅仅是Wow6432Node注册表重定向器.
资源
RegistryKey.OpenBaseKey方法(RegistryHive,RegistryView)
RegistryKey.OpenSubKey方法(String,RegistryKeyPermissionCheck,RegistryRights)