我正在运行为AnyCPU编译的C#应用程序。它访问注册表键并获得它们的价值。如果密钥不存在,它将使用默认值创建它。我正在使用函数Registry.LocalMachine.CreateSubKey(strRegistryPath)来执行此操作,其中strRegistryPath是\ SOFTWARE \ MyAppln。密钥在32位机器上的HKLM \ SOFTWARE \ MyAppln中创建并正常工作。但是,当我尝试在64位机器上使用相同的程序时,这些键将在HKLM \ SOFTWARE \ Wow6432Node \ MyAppln中创建。由于这个原因,我无法正确读取这个值。如何让我的应用程序访问注册表项,而不管它的32位或64位?
如何使我的程序在32位和64位机器上都能工作?
你*不*实际编译您的程序为AnyCPU。平台的名称与抖动是否强制以32位模式运行没有任何关系。重要的*真实*设置是项目+属性,生成选项卡,平台目标设置。如果您看到“首选32位”选项,请将其关闭。重复发布配置。 –
我使平台目标为AnyCPU。我看不到任何首选的32位选项。发布配置我没有得到你。仍然没有工作。 @HansPassant –
什么是“仍然无法使用?”请定义“不工作”。我敢肯定,我给你的答案允许你从32位进程写入64位视图,如果这是你想要的。然而,人们不禁要问,为什么你非常关心从32位进程写入32位视图。如果你的进程是32位,那么32位视图可能是写作的地方? –