我有一个64位安装项目,带有64位Windows服务exe和dll。在我的安装程序类中,我使用以下代码创建注册表项:
using (typeKey = typeKey.CreateSubKey(@"SOFTWARE\Folder\Folder\Folder"))
{
typeKey.SetValue("Type", 0);
typeKey.Close();
}
但它一直在SOFTWARE \ WOW6432NODE \ SOFTWARE \ FOLDER \ FOLDER \ FOLDER创建注册表项。 顺便说一下,在64位程序文件文件夹下复制exe和dll。将文件夹复制到64位文件夹没问题。
有什么想法吗?
答案 0 :(得分:2)
这是因为您的自定义操作使用32位进程。也许这篇文章会有所帮助: http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx
基本上,您需要使其使用64位进程或调用可以在64位注册表配置单元中编写的函数。
答案 1 :(得分:2)
您正在使用.NET 4,使用新的RegistryKey.OpenBaseKey()方法并传递RegistryView.Registry64