• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

AutoIt3(AU3源码)识别64&32位操作系统的手段及代码

AutoIT3 奇跡の海 2年前 (2017-05-31) 553次浏览 已收录 0个评论 扫描二维码

如题,x64如火如荼,制作软件也要开始考虑这个问题了,特总结识别x64系统的几种方案
AutoIt3(AU3源码)识别64&32位操作系统的手段及代码

Autoit 法则

a.识别x64系统地au3代码1

网上流传 IsWOW64Process 是识别x64的kernel32.dll的调用,我测试不然,貌似Wow64EnableWow64FsRedirection 调用才是唯一几个x64区别x86系统的kernel32.dll调用,微软已经公开否认
微软msdn http://msdn.microsoft.com/en-us/library/ms684139(VS.85).aspx

;IsOS64 returns true if OS is 64 bit
;IsWOW64Process function only exists on 64 bit windows *now Wow64EnableWow64FsRedirection*
Func IsOS64()
Local $kernel32 = DllOpen("kernel32.dll")
Local $modHandle = DllCall($kernel32, "long", "GetModuleHandle", "str", "kernel32.dll")
Local $OS64 = DllCall($kernel32, "long", "GetProcAddress", "long", $modHandle[0], "str", "Wow64EnableWow64FsRedirection")
Return $OS64[0]<>0
EndFunc   ;==>IsOS64

b.识别x64系统地au3代码2

简单地判定系统目录下有无syswow64目录

If FileExists(@WindowsDir & "\SysWOW64") Then
;MsgBox(0, "OS", "X64")
$regsys = "HKLM64\SOFTWARE\"
Else
;MsgBox(0, "OS", "32BIT")
$regsys = "HKEY_LOCAL_MACHINE\SOFTWARE\"
EndIf

c.识别x64系统地au3代码3

其实autoit3.3已经内部包含系统常量 @OSArch 为x64 或者x86 见 http://www.msfn.org/board/topic/142867-cant-install-adobe-flash-player-silent-install/

If @OSArch = "X86" Then
EndIf
If @OSArch = "X64" Then
EndIf

Nsis法则

nsis比较简单如下代码 见 http://stackoverflow.com/questions/4128099/installer-which-chooses-the-msi-based-on-the-cpu-architecture-x86-32-bit-x64-6

!include "x64.nsh"
${If} ${RunningX64}
   MessageBox MB_OK "running on x64"
${Else}
   MessageBox MB_OK "running on x86"
${EndIf}

版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->AutoIt3(AU3源码)识别64&32位操作系统的手段及代码!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址