Goo*_*ber 4 c# windows registry winapi
尝试执行写入注册表的简单任务,以使C#应用程序在启动时运行.
使用基本Win32.RegistryKey设置,但由于某种原因,它不断将我的密钥添加到/SOFTWARE/WOW6432/Microsoft/Windows..etc目录而不是普通ol/SOFTWARE/Microsoft/Windows..
尝试阅读它有点但似乎没有一个简单的答案这个问题:如何专门写一个键/SOFTWARE/Microsoft/Windows注册表键而不是写入WOW6432?我已经检查过以确保我的Visual C#Express解决方案文件将平台列为x86 ...所以它正在正确编译...我只是不想要那个wow6432目录.
谢谢你的建议!
编辑:
我现在使用以下内容仍然没有成功:
Microsoft.Win32.RegistryKey localKey32 = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry64);
Run Code Online (Sandbox Code Playgroud)
您的进程以x86为目标(即它是一个32位进程),当在WOW64仿真器下的64位计算机上运行时,注册表重定向开始起作用.对于注册表的某些部分,系统维护两个不同的视图,一个用于32位进程,另一个用于64位进程.受重定向影响的密钥列表如下:受WOW64影响的注册表项.
重定向对应用程序是透明的.32位进程访问HKLM\Software并且不知道(实际上不需要知道)64位操作系统实际访问HKLM\Software\Wow6432Node.
您有多种选择:
RegistryView枚举.但请注意,此功能需要.net 4,对于.net的早期版本,需要p/invoke才能打开注册表的视图.HKLM\Software.在处理启动注册表项时运行时,64位系统将读取注册表的两个视图.换句话说,您现有的方法已经有效!最后,我要评论设置此注册表项的任务最好留给安装程序.修改密钥HKLM\Software需要管理员权限,通常您只能在安装时拥有管理员权限.