.NET平台处理32位系统和64位系统的一点兼容性问题
来源:互联网 发布:网络及信息安全答案 编辑:程序博客网 时间:2024/05/17 23:15
现在随着硬件的升级换代,越来越多的电脑开始使用64位的系统,但是仍然有很大一部分无法升级的旧电脑还在使用32位的操作系统。如果在64位系统下开发和运行32位程序的话,和32位系统运行32位程序会有一些区别。
注册表问题
32位系统和64位系统的注册表结构并不相同。64位系统下,使用32位程序访问注册表的话,节点会被自动重定向到Wow6432Node节点下。例如想要保存信息到
HKEY_LOCAL_MACHINE\SOFTWARE\MyApp
的话,实际上会保存到
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位程序都可以访问。
%windir%\system32\catroot%windir%\system32\catroot2%windir%\system32\driverstore%windir%\system32\drivers\etc%windir%\system32\logfiles%windir%\system32\spool
要在32位程序中访问System32文件夹的时候,可以通过以下方式访问。这是一个仅在32位程序中可用的别名,可以直接访问System32文件夹。
%windir%\Sysnative
判断系统位数
最后一件事情就如判断系统位数,在不同的系统下执行不同的操作。如果使用的是.NET4以上的话,Environment类中提供了一个属性Is64BitOperatingSystem,如果当前是64位操作系统的话,就会返回true。另外还有一个Is64BitProcess属性,如果当前进程是64位进程的话,就会返回true。
- .NET平台处理32位系统和64位系统的一点兼容性问题
- IIS在64位系统的兼容性问题
- PHP 内置 函数 32 位 和 64 位平台兼容性问题
- MAC系统关于32位和64位的系统
- 64位系统和32位系统的区别
- 32位系统和64位系统的区别
- 32位系统和64位系统的区别
- 32位系统和64位系统的区别
- SQLite的.NET应用自适应32位/64位系统
- 32位和64位系统
- 64位和32位系统编程
- 32位和64位系统区别
- 32位系统和64位区别
- 64位和32位系统区别
- 切换AIX的64位和32位系统内核
- Android 64位系统和32位的兼容性分析
- 32位和64位系统的区别
- 32位和64位系统对于程序员的影响
- hihocoder #1110 : Regular Expression
- 【Android】GitHub Android Libraries Top 100 简介
- CentOS7.0离线安装RHadoop
- Google推荐的图片加载库Glide介绍
- 企业级集中身份认证及授权管理实践freeipa
- .NET平台处理32位系统和64位系统的一点兼容性问题
- adb常用命令总结
- iOS-http请求出错App Transport Security Settings
- cvs修改的文件不能提交(报cvs [commit aborted]: end of file from server (consult above messages if any))
- Android ListView基础篇
- java使用PDFBox2.0将PDF生成图片
- 自定义edittext 手机格式 银行卡格式
- Java编程思想第四版第十二章学习——通过异常处理错误(1)
- 什么是J2EE