如何检查我的 Wine 前缀是 32 位还是 64 位?

aal*_*lai 18 64-bit wine 32-bit playonlinux

我看到大量线程解释如何创建 32 位前缀,但我想检查我使用的前缀是 32 位还是 64 位。我问的原因是我正在使用 PlayOnLinux,并且我已经创建了一个 32 位虚拟驱动器(例如 X)。现在,当我在文件夹 ~/.PlayOnLinux/wineprefix 中打开 winetricks 时,wineprefix 给了我消息

您使用的是 64 位 WINEPREFIX。如果遇到问题,请在报告错误之前在干净的 32 位 WINEPREFIX 中重新测试。

但是,当我在 ~/.PlayOnLinux/wineprefix/X 中打开 wineprefix 时,该消息没有出现。

如何检查前缀是 32 位还是 64 位?

Raj*_*ita 7

您所要做的就是浏览 PlayonLinux 的虚拟驱动器。转到 WINEPREFIX/drive_c/ 文件夹并查找 Program Files 文件夹。

如果您只看到 Program Files 而没有 ProgramFiles(x86) 那么您使用的是 32 位 Wine Prefix。如果您看到两者,那么您使用的是 64 位 Wine Prefix。希望这可以帮助 !!


r00*_*0it 6


感谢 @wilf 的“WINEPREFIX/drive_c/windows/syswow64”(它有效)..
但我一直在编辑wine 注册表以查找任何揭示
系统正在使用的 winearch 的条目(win32 或 win64),我发现它在:

cat /root/.wine/system.reg | grep -m 1 '#arch' | cut -d '=' -f2
Run Code Online (Sandbox Code Playgroud)

该命令显示:win32(32位)或win64(64位)




下面是如何在脚本编写中使用它的一个示例:

  #!/bin/sh
  HkLm=$(cat /root/.wine/system.reg | grep -m 1 '#arch' | cut -d '=' -f2) > /dev/null 2>&1 # winearch (regedit)
  if [ "$HkLm" = "win64" ]; then
    echo "[x] winearch config: $HkLm (64 bits)"
    echo "[i] Please run:$IPATH/bin/enable_x32bits_wine.sh"
    exit
  fi
Run Code Online (Sandbox Code Playgroud)

最后注意事项:我已经在 kali linux 上对此进行了测试..
如果WINEPREFIX=/root/.wine32那么cat命令必须包含该目录
才能读取内部文件夹以进行 regedit winearch 设置。


Wil*_*ilf 5

如果您使用的是 PlayOnLinux,您可以使用 GUI 检查哪个版本 - 打开 PlayOnLinux,单击相关程序上的“配置”,然后查看左侧窗格:

或者,您可以执行 winetricks 所做的(在版本中20140817,大约在 3600 行),即检查 wineprefix 是否存在目录WINEPREFIX/drive_c/windows/syswow64,该目录应该在 64 位 windows/wineprefix 中找到,但不是 32 位版本。这应该适用于普通的 wineprefixes 和 PlayOnLinux 下的那些。


小智 5

我在脚本中需要类似的东西,所以根据@wilf 的回答制作了这个脚本:

#!/bin/bash

## Wine can spam stderr
ERRLOG=/tmp/dllerrlog.log

WINESYSDIR=$( winepath -u c:\\windows\\system32 2> $ERRLOG )    
if [[ ${WINESYSDIR} == *"/system32" ]]; then
  echo "Prefix is 32 bit"
  # do 32 bit stuff here...
elif [[ ${WINESYSDIR} == *"/syswow64"* ]]; then
  echo "Prefix is 64 bit"
  # do 64 bit stuff here...
else
  echo "Unknown wine architecture"
fi
Run Code Online (Sandbox Code Playgroud)

这是一些输出:

$ ./winearch.sh 
Prefix is 64 bit
Run Code Online (Sandbox Code Playgroud)

在 32 位葡萄酒前缀上,我有:

$ WINEPREFIX=~/.wine32 ./winearch.sh 
Prefix is 32 bit
Run Code Online (Sandbox Code Playgroud)