在C#中添加注册表项会在我读回它时显示,但在regedit中不会显示
我正在使用以下代码添加注册表项:在C#中添加注册表项会在我读回它时显示,但在regedit中不会显示,c#,windows-vista,registry,C#,Windows Vista,Registry,我正在使用以下代码添加注册表项: var key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(key); 在我的代码中,我可以读回find的值,即使是在两次运行之间。但是,该键从未在regedit中显示,其他应该读取该键的程序无法看到它 该程序在Vista上运行,权限提升。您能说出您在注册表中查看的是哪个配置单元吗?我的第一个猜测是,您可能不小心找错了地方。听起来,即使您认为自己是以提升的权限运行的,但您并没有,而且您的程序注册表访
var key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(key);
在我的代码中,我可以读回find的值,即使是在两次运行之间。但是,该键从未在regedit中显示,其他应该读取该键的程序无法看到它
该程序在Vista上运行,权限提升。您能说出您在注册表中查看的是哪个配置单元吗?我的第一个猜测是,您可能不小心找错了地方。听起来,即使您认为自己是以提升的权限运行的,但您并没有,而且您的程序注册表访问正在被悄悄地重定向到安全的地方
查看详细信息。您可能没有您认为自己拥有的特权。UAC打开时,如果您没有足够的权限写入“真实”注册表(文件系统也是如此),操作系统将创建一个虚拟注册表供您写入。Vista引入了注册表虚拟化;在某些情况下,“全局”注册表更改会重定向到用户特定的位置: 注册表虚拟化是一种 应用程序兼容性技术 启用注册表写入操作的 具有全球影响力的 已重定向到每个用户位置。这 重定向对用户是透明的 读或写的应用程序 到登记处。它是受支持的 从WindowsVista开始 这种形式的虚拟化是一种 临时应用程序兼容性 技术微软打算 将其从的未来版本中删除 Windows操作系统更多 应用程序与 WindowsVista。所以是 重要的是,您的应用程序 不依赖于行为 注册表虚拟化在虚拟环境中的应用 系统 您可以通过禁用此功能,也可以仅为您触摸的键禁用此功能 WOW64(您是否运行64位版本的Vista?)。这让我很恼火 请参阅。这听起来像个问题。如果应用程序的用户不是管理员,则注册表写入将被虚拟化到每个用户的虚拟存储中--不过,如果您的其他程序在同一帐户下运行,则它仍应能够看到每个用户的设置 链接页面告诉您在哪里可以找到虚拟商店来检查这一理论