前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET平台处理32位系统和64位系统的一点兼容性问题

.NET平台处理32位系统和64位系统的一点兼容性问题

作者头像
乐百川
发布2022-05-05 19:15:59
9730
发布2022-05-05 19:15:59
举报
文章被收录于专栏:乐百川的学习频道

现在随着硬件的升级换代,越来越多的电脑开始使用64位的系统,但是仍然有很大一部分无法升级的旧电脑还在使用32位的操作系统。如果在64位系统下开发和运行32位程序的话,和32位系统运行32位程序会有一些区别。

注册表问题

32位系统和64位系统的注册表结构并不相同。64位系统下,使用32位程序访问注册表的话,节点会被自动重定向到Wow6432Node节点下。例如想要保存信息到

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\MyApp

的话,实际上会保存到

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\App

System32文件夹

%windir%\System32文件夹存放着各种软件所需要的运行库等。一般情况下是C:\Windows\System32,作用和Linux系统下的/usr/share/类似。由于很多老软件类程序中硬编码了System32文件夹,因此为了向后兼容性,在64位系统中仍然保留了这个文件夹。但是由于32位和64位系统的不同,因此32位程序所需要的库等都被放置在了%windir%\SysWOW64下。为了保证兼容性,32位程序在64位系统下访问System32文件夹的时候,会被重定向到SysWOW64下,这个特性叫做文件系统重定向

以下文件夹不会被重定向,32位和64位程序都可以访问。

代码语言:javascript
复制
%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

要在32位程序中访问System32文件夹的时候,可以通过以下方式访问。这是一个仅在32位程序中可用的别名,可以直接访问System32文件夹。

代码语言:javascript
复制
%windir%\Sysnative

判断系统位数

最后一件事情就如判断系统位数,在不同的系统下执行不同的操作。如果使用的是.NET4以上的话,Environment类中提供了一个属性Is64BitOperatingSystem,如果当前是64位操作系统的话,就会返回true。另外还有一个Is64BitProcess属性,如果当前进程是64位进程的话,就会返回true。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注册表问题
  • System32文件夹
  • 判断系统位数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档