下面是我的代码:
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ADM");计算机上存在该注册表项。key始终为空。
我不认为这是一个安全问题。我以管理员身份运行。(我甚至在管理员模式下显式地运行了程序集)。
我使用的是在64位Windows 7上运行的Visual Studio 2010。
发布于 2010-09-07 13:38:54
问题是我运行的是64位,而我的应用被编译成了32位。
密钥由以下人员读取:
Microsoft.Win32.RegistryKey key =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE");不是HKLM\SOFTWARE,而是HKLM\SOFTWARE\Wow6432Node\.将应用程序编译为x64解决了这个问题。
发布于 2012-05-13 14:39:06
尝试单独打开每个注册表项,如下所示
Microsoft.Win32.RegistryKey key1 = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE");
Microsoft.Win32.RegistryKey key2 = key1.OpenSubKey(@"ADM");不使用字符串@"SOFTWARE\ADM";
发布于 2010-09-07 13:39:18
我使用不同的应用程序名(我有一个密钥)运行您的代码,一切正常,所以代码是正确的,但我在Win XP上测试了这一点。
在研究写入注册表时,我发现了一篇关于Windows7中的registry virtualization的文章,它可能会给您带来问题:
Windows和更高版本的
通过自动重定向这些操作来改进这些应用程序的应用程序兼容性。例如,对全局存储( (HKEY_USERS\_Classes\VirtualStore\Machine\Software).
)的注册表操作被重定向到称为虚拟存储HKEY_LOCAL_MACHINE\Software的用户配置文件内的每个用户的位置
https://stackoverflow.com/questions/3655968
复制相似问题