arkhe 发表于 2011-8-16 13:52:59

【已解决】x86编译程序,为什么不可以在x64上正常运行???

本帖最后由 arkhe 于 2011-8-18 19:25 编辑

在x64的系统下,如果编译为x86,那么show的系统安装日期不正确,为:1970/01/01 08:00:00

如果编译为x64,那么就可以正确的显示了。

一般x86的程序是可以在x64上run的,可是为什么会出现这个问题?求解

在什么时候会区分x64和x86?

我看了date.au3的 _DateAdd()函数,没有发现撒有用信息。。。。

求解

ps:我有搜索以前的帖子,但是那个帖子的问题也没有解答。。。Func _InstallRunTime()
        Local $_Date, $_TickCount, $iDate, $iHours, $iMins, $iSecs, $_Time
        $_Date = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "InstallDate")
        $_Time = String(_DateAdd( 's',$_Date, "1970/01/01 08:00:00"))
       
        $_TickCount =_Date_Time_GetTickCount()
        _TicksToTime($_TickCount, $iHours,$iMins,$iSecs)
        $_Time = String($iHours)&"H "&String($iMins)&"M "&String($iSecs)&"S"
       
        Return $_Time
EndFunc

arkhe 发表于 2011-8-16 22:56:59

{:face (245):}为什么每人来说下这个问题呢

lxz 发表于 2011-8-18 06:34:41

没遇到过.....

happytc 发表于 2011-8-18 08:46:09

回复 1# arkhe

64位的注册表要加64字样:HKEY_LOCAL_MACHINE64


If StringInStr(@OSArch, "86") Then
        $_Date = RegRead("HKCM\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "InstallDate")
Else
        $_Date = RegRead("HKCM64\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "InstallDate")
EndIf

mo_shaojie 发表于 2011-8-18 09:20:22

又学习了一些知识.多谢.

arkhe 发表于 2011-8-18 14:19:56

回复arkhe

64位的注册表要加64字样:HKEY_LOCAL_MACHINE64
happytc 发表于 2011-8-18 08:46 http://www.autoitx.com/images/common/back.gif

谢谢。。。。你的解决方法是正确的{:face (411):}

我现在所用到的机器都是64位的系统,
我都没有在注册表那里加64,
但是大部分程序编译为32bit的是可以正常运行的。

就是这个例外。。。。。
虽然解决了问题,但是还是想了解为什么有的可以用,有的必须加64呢?

yinbinly 发表于 2011-11-18 22:06:18

原来是这样啊

xms77 发表于 2011-11-18 22:23:50

原来是这样,学习了
页: [1]
查看完整版本: 【已解决】x86编译程序,为什么不可以在x64上正常运行???