问题标签 [wow64]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2528 浏览

c++ - Wow64DisableWow64FsRedirection 和 GetNamedSecurityInfo - 不可避免的 ERROR_BAD_EXE_FORMAT?

我正在使用Wow64DisableWow64FsRedirection/Wow64RevertWow64FsRedirection来禁用和恢复 WOW-64 文件重定向(使 system32\ 到 syswow64\ 和一些注册表更改)。MSDN 页面警告说,您应该非常靠近地使用这些对,因为它们会影响所有 I/O 操作,包括加载 DLL。

我已经成功使用了一段时间,但现在遇到了一个看似不可能的情况。我试图调用的函数是GetNamedSecurityInfo一个文件路径。文件路径经常会进入 system32 文件夹,所以我需要禁用重定向。但是,如果我禁用重定向,则函数返回ERROR_BAD_EXE_FORMAT.

我试图预加载它所在的 DLL,LoadLibrary(TEXT("Advapi32.dll"))但这没有帮助。我的猜测是它正在加载另一个 DLL,GetNamedSecurityInfo但我不知道是哪个。

所以这是现在的问题。处理这种情况的最佳方法是什么?我应该在使用之前预加载所有可能的 DLLWow64DisableWow64FsRedirection吗?有没有更好的办法?

谢谢。

0 投票
1 回答
1030 浏览

windows - 64 位 Windows 注册表 - 为什么将 %ProgramFiles% 转换为 %ProgramFiles(x86)%?

运行以下代码后,在 32 位进程中,数据%ProgramFiles%自动转换。

结果
在此处输入图像描述 <-到底是什么。谁扩展它?

我不想转换数据。- 但我必须使用类型REG_EXPAND_SZ
我该怎么办?

0 投票
2 回答
3637 浏览

python - 为什么 os.path.exists("C:\\windows\\system32\\inetsrv\\metaback") 即使存在也会返回 False ?

我有一个 python 程序,它应该清理许多目录,其中一个是C:\windows\system32\inetsrv\metaback;但是,os.path.exists()即使该目录存在(并且我有权访问它),也会在该目录上返回 False。

有趣的是,windirstat工具也完全忽略了它。

谁能想到这可能的原因以及我可以检查它是否存在的另一种方法?我什至似乎无法运行os.listdir()它。

更新:os.path.exists()如果 Windows 框是 32 位,则在此目录上工作,但如果它是 64 位,则不能。也可以在 32 位机器上的 windirstat 中正确显示。

0 投票
1 回答
433 浏览

32bit-64bit - 如何生成仅限 32 位的托管 C++ 程序集

我需要在 Visual Studio 2005 的托管 C++ 中编译一个 DLL。

我想要它与 32Bit corflag。请参阅http://illuminatedcomputing.com/blog/?p=117以供参考。

默认情况下,我选择 Win32 平台并在 liker 中设置 /MACHINE:X86 选项,但生成的 DLL 已关闭 32bit corflag。您可以通过从命令行执行来查看它

corflags MyDll.dll

在 Windows 64 位中运行该 dll 时遇到问题。所以我需要强制 dll 为 32 位。

关于如何配置 Visual Studio 2005 编译器的任何想法?

0 投票
3 回答
2495 浏览

c# - 32 位 OpenFileDialog --> 64 位 System32?

在 32 位程序中,如何让打开/保存文件对话框显示 64 位系统的 System32 文件夹中的文件?

(Wow64DisableWow64FsRedirection不起作用,因为由于某种原因它不适用于对话框,我猜是因为它在不同的线程上。当然 usingSysNative不起作用,因为用户不知道内部发生了什么; 他只想查看计算机上的“实际”文件。)


这是提问的另一种方式:

是否有任何System3232 位程序从打开文件对话框浏览 64 位文件夹?

0 投票
3 回答
6130 浏览

windows - WoW64 仿真层有什么作用?

在此处输入图像描述

所有 WoW64 应用程序都经过 WoW64 仿真层。
我想知道这一层发生了什么。(特别是他们如何转换地址空间)

请给我一些重要的观点。

0 投票
1 回答
13955 浏览

c++ - x64 系统上的 win32 应用程序运行时错误(dll 加载),同时编译 0K

我最初在win7 32bits上设计了一个win32应用程序,用VC9.0。我最近升级到win7 64位,并尝试构建+执行以前的应用程序。

构建运行良好(win32 应用程序),但在运行时我收到错误“[...] has exited with code -1073741701 (0xc000007b)”。

我猜这是加载[预期] 32 位 dll 的 64 位版本的结果。

这个项目的具体依赖是: SDL.lib SDLmain.lib SDL_ttf.lib opengl32.lib glu32.lib wininet.lib

SDL 和 SDL_ttf 仅在 32 位版本中。我假设 Visual Studio 足够聪明,可以在我请求 win32 应用程序时获取 \syswow64 中的 opengl 和 glu lib 文件。

难道是因为wininet?还是我犯了一个错误?

谢谢,

0 投票
1 回答
1063 浏览

vb6 - 在 64 位 Win2k3 上使用 MSDTC/oracle XA 的 32 位 DLL

我有一个 COM+ 应用程序(主要基于 vb6),我需要在 64 位系统上运行。它应该与 Oracle 数据库(10g,32 位)通信。当我禁用 XA 时一切正常,但是当我启用它时,我收到以下错误;

XA 事务管理器调用 XA 资源管理器 DLL 中的“GetXaSwitch”函数。调用“GetXaSwitch”函数失败:File=d:\nt\com\complus\dtc\dtc\xatm\src\xarmconn.cpp Line=2503。

我的 oracle 客户端是 10g 32 位的。

我不太了解 32 位/64 位兼容性,但我确实看到我的应用程序正在调用位于注册表 WOW64 部分 ([hklm/software/wow6432node/microsoft/msdtc/mtxoci]) 中的 MSDTC dll,而它访问位于注册表的本机 64 位部分中的 XADLL ([hklm/software/microsoft/msdtc/xadll])

因此,我尝试将其中的引用更改为 32 位 dll,但它们不会加载。

有没有人对如何解决这个错误有任何想法?

0 投票
1 回答
705 浏览

c# - .net Web 应用程序在 64 位 Windows / iis 7.5 上运行缓慢

我有一个用 asp.net 3.5 / sql server 2005 编写的 Web 应用程序,它在我的本地计算机 (winXP) 和测试服务器 (win2003) 上运行得非常快,但是在运行 win2008 的生产服务器上时,有些页面运行速度非常慢r2。该网络应用程序未编译,但确实使用了两个 32 位 dll(intelligencia urlrewriter 和活动监视器 api)。我已将 iis7.5 配置为为应用程序池启用 32 位应用程序,但这并没有什么不同。此外,与加载正常的任何其他页面相比,有问题的页面不使用提到的 dll。有问题的页面确实做了非常繁重的数据库工作,所以我想这可能与生产服务器运行 32 位 sql 的事实有关!?!

有没有人经历过这些症状,或者任何人都可以就我如何解决这个问题提供一些建议?

干杯

蒂姆

0 投票
3 回答
2454 浏览

winapi - 从 32 位进程打开 %SystemRoot%\system32\calc.exe 会重定向到另一个文件。哪个,为什么以及如何?

我目前正在用 C++ 编写一些测试代码,这些代码会混淆 PE 文件以了解其文件格式结构。我的项目设置为编译为 64 位。在我的代码中,我打开 %SystemRoot%\system32\calc.exe 并读取 IMAGE_DOS_HEADER 和 IMAGE_NT_HEADERS 结构。同时,我在 Notepad++ 中使用十六进制编辑器插件打开了相同的 calc.exe。我将代码读取的值与 Notepad++ 进行了比较,发现它们不同。我将 calc.exe 从 System32 复制到 C:\Temp\calc.exe,现在值匹配。

Notepad++ 似乎是一个 32 位应用程序(尚未检查 PE 文件,但由于它默认安装到 Program Files (x86),因此这似乎是一个安全的假设)。

这是 WinSxS 在工作吗?或者还有什么原因造成的?哪个文件实际上被提供给打开 %SystemRoot%\system32\calc.exe 的 32 位应用程序?

只是好奇。提前感谢您对此有所了解。