沐月狐 发表于 2019-11-17 20:23:15

如何兼容64位系统和32位系统

#NoTrayIcon
#PRE_UseX64=n
$file = "C:\Windows\System32\drivers\etc\hosts"
Run(@ComSpec & " /c " & "attrib -r -s " & $file,"",@SW_HIDE)#NoTrayIcon
#PRE_UseX64=n
#include <Process.au3>
$file = "C:\Windows\System32\drivers\etc\hosts"
_RunDos("attrib -r -s " & $file)这2个其实效果是一样的,但是只要添加#PRE_UseX64=n,64位系统就失效,但是不添加#PRE_UseX64=n,32位系统又运行不了,怎么样才能在2种系统同时能有效呢

afan 发表于 2019-11-17 20:36:57

重定向问题 添加以下试试
DllCall('kernel32.dll', 'Bool', 'Wow64DisableWow64FsRedirection', 'ptr', '')

229989799 发表于 2019-11-17 20:38:36

我的64位兼容32位好像和你的代码不一样,可能版本不同把

#AutoIt3Wrapper_UseX64=n

沐月狐 发表于 2019-11-17 22:32:44

本帖最后由 沐月狐 于 2019-11-17 22:33 编辑

谢谢楼上各位的解答,我根据QQ群内群友的提示,现在用FileSetAttrib来解决了,楼上各位的建议晚点再测试
$file = "C:\Windows\System32\drivers\etc\hosts"
FileSetAttrib($file,"-RS")

anythinging 发表于 2019-11-18 10:50:41

也想学习下32和64位,在操作哪些方面有不同。比如文件操作,注册表操作等等,以避免以后犯错。

yh6688 发表于 2019-11-18 17:03:11

这一点还真没有注意到,学习了

redapple2008 发表于 2019-11-19 08:42:11

感觉直接打包成32位就可以了。

破帽遮颜 发表于 2019-11-22 01:44:03

我都是直接#PRE_UseX64=n,然后打包
没见过什么问题

沐月狐 发表于 2019-11-23 23:23:06

破帽遮颜 发表于 2019-11-22 01:44
我都是直接#PRE_UseX64=n,然后打包
没见过什么问题

那是因为你没有用这个命令操作这个文件
页: [1]
查看完整版本: 如何兼容64位系统和32位系统