Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中添加注册表项会在我读回它时显示,但在regedit中不会显示_C#_Windows Vista_Registry - Fatal编程技术网

在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?)。这让我很恼火

请参阅。

这听起来像个问题。如果应用程序的用户不是管理员,则注册表写入将被虚拟化到每个用户的虚拟存储中--不过,如果您的其他程序在同一帐户下运行,则它仍应能够看到每个用户的设置

链接页面告诉您在哪里可以找到虚拟商店来检查这一理论