用64位Windows进行开发的五点建议
2009-07-07 00:00:00 来源:WEB开发网3.COM可以是64位
普遍存在的误解是认为COM和ActiveX仅限于32位,但是使用VB.NET,你可以使用64位COM和ActiveX控件。Windows没有按照64位编译的控件,但是其中一个值得注意的例外是sysmon.ocx ActiveX 控件,该控件可以让你创建系统监测图。
你可以使用Windows.Forms应用程序中的64位ActiveX控件,但是当涉及汇编的时候就存在缓冲。VS当前是32位的应用程序,它在汇编的时候需要32位的ActiveX控件以便创建运行时可随时启用的COM组件包装。为了在VS中进行编译,你需要32位的版本。一旦程序被编译,就只需要被选中的平台。
在你没有32位版本或类似版本的情况下,你可以使用命令行来运行64位工具以便创建一个用于ActiveX控件的Interop程序集。见Tlblmp.exe文件以了解详情。
4.意识到问题
32位应用程序运行于Windows 64中时,它与模拟器一起运行。模拟器被称为WOW64,是Windows On Windows64的缩写,可以让32位应用程序按照32位操作系统进行查看。WOW64模拟器加载了一个ntdll.dll的x86版本,提供了切入点和替换程序,还会截取最重要的注册表和文件系统操作。
WOW64模拟器也暴露出不同的适合32位应用程序的环境型变量。因此,32位应用程序将ProgramFiles环境型变量为ProgramFiles(x86)。以64位运行的时候,如果你写出类似MsgBox(Environ(“ProgramFiles”))的代码,会获得"C:\Program Files",如果你32位运行,则获得"C:\Program Files (x86)"。
模拟器所做的事情与注册表和系统目录类似。出于兼容性和性能的考虑,%windir%\System32 文件夹是64位文件夹。也就是说,64位应用程序中不存在任何截取。重新定向的32位操作文件夹默认名为%windir%\SysWOW64。名称SysWOW64指明它要被32位模拟器WOW64使用。这或许有些令人困惑。
更多精彩
赞助商链接