![是否有解决方法可以让经典 Win32 桌面应用在 Windows RT(ARM)上运行](https://linux22.com/image/1338614/%E6%98%AF%E5%90%A6%E6%9C%89%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E8%AE%A9%E7%BB%8F%E5%85%B8%20Win32%20%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E5%9C%A8%20Windows%20RT%EF%BC%88ARM%EF%BC%89%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
根据这篇 arstechnica 文章和这篇 Mozilla 博客文章Win32 API 存在于 Windows RT 上,但微软选择不将其提供给第三方应用程序。
WinRT ARM 上的 Office 和 Internet Explorer 使用标准 Win32 库,因此可以运行。微软表示,他们不向其他人提供该库的原因是……“更长的电池寿命、可预测的性能,尤其是长期可靠的体验。”
有没有一种方法可以让经典的 Win32 桌面应用程序在 Windows RT 上运行,例如通过注册表或其他方法。
注意:我知道官方不支持它们,但我在这里想问的是是否有一些解决方法可以允许它发生。
答案1
作为熟练的极客指出,首先需要重新编译以针对 ARM 处理器。
我发现这里记录了一些如何实现此目的的步骤: 为 Windows RT 编译桌面应用程序
上述方法生成一个 ARM 可执行文件,但是当它在 Windows RT 设备上运行时,会出现以下错误消息:
Windows cannot verify the digital signature for this file
这里有一些关于规避此错误消息的可能方法的进一步详细信息: http://forum.xda-developers.com/showthread.php?p=31519618&postcount=1
StackOverflow 上正在进行的讨论如下: https://stackoverflow.com/questions/11151474/can-arm-desktop-programs-be-built-using-visual-studio-2012/
更新(2013 年 1 月 9 日)- 遭 CLROKR 攻击
一位名叫克罗克已经想出了一个无需签名即可让任意桌面应用程序在 Windows RT 上运行的方法。
所用方法是破解 Windows 内核中的单个字节......
... 在内核深处,在受 UEFI 安全启动保护的散列和签名数据部分中,有一个代表最低签名级别的字节。
要做到这一点,每次运行应用程序时都需要使用远程调试器,所以这不是一个容易利用的黑客技术,但随着时间的推移,可能会得到改进,直到出现一个简单的越狱型安装程序。
这里还有一些关于人们使用此方法的信息: http://forum.xda-developers.com/showthread.php?t=1885399
答案2
没有解决办法。win32 应用程序是针对 x86 或 x64 架构编译的。Windows RT 是 Windows 的 ARM 版本。应用程序本身必须重新编译为 ARM 才能在 Windows RT 上运行。
我会向应用程序供应商的支持部门发送电子邮件,请求他们构建 ARM。