在C#中添加注册表项会在我读回时显示,但不会在regedit中显示

ICR*_*ICR 6 c# registry windows-vista

我使用以下代码添加注册表项:

var key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(key);
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我可以读回值find,即使在运行之间也是如此.但是,密钥永远不会显示在注册表中,另一个应该读取密钥的程序无法看到它.

该程序在Vista上运行,具有更高的权限.

Mic*_*tta 16

Vista中引入注册表虚拟化 ; 在某些情况下,"全局"注册表更改会重定向到特定于用户的位置:

注册表虚拟化是一种应用程序兼容性技术,可以将具有全局影响的注册表写入操作重定向到每个用户的位置.此重定向对于从注册表读取或写入注册表的应用程序是透明的.从Windows Vista开始支持它.

这种形式的虚拟化是一种临时应用程序兼容技术; 随着更多应用程序与Windows Vista兼容,Microsoft打算将其从未来版本的Windows操作系统中删除.因此,重要的是您的应用程序不会依赖于系统中注册表虚拟化的行为.

您可以通过自定义应用程序清单来禁用此功能,也可以仅针对您正在触摸的键修改策略.

WOW64(你运行64位版本的Vista吗?)也做注册表重定向.这让我烦恼不已.

请参阅有关注册表虚拟化MSDN文章.