草庐IT

Wow64​

全部标签

windows - SHGetSpecialFolderPath,如何从 32 位应用程序访问 64 位 CSIDL

有没有办法让在64位系统上运行的32位应用程序访问64位应用程序的默认文件夹?例如,在32位应用程序中将SHGetSpecialFolderPath与CSIDL_PROGRAM_FILES结合使用会返回“C:\从32位应用程序获取“C:\ProgramFiles”的方法?这里的一个相关问题没有帮助SHGetFolderPath()32bitvs64bit在调用SHGetSpecialFolderPath之前也不会抑制wow64文件系统重定向 最佳答案 回答我自己的问题,SHGetSpecialFolderPath似乎是不可能的。在V

c++ - 如何查找任意进程是否在 wow64 下运行?

我需要一个工具来发现任意进程是在机器上以x86还是x64模式运行。我需要根据进程ID从C++以编程方式执行此操作。必须有某种方法可以做到这一点(正如您可以从任务管理器中清楚地看到的那样)。有谁知道WindowsAPI会告诉您给定进程ID,应用程序是否在wow64下运行?另一种方法是根据进程ID找出正在运行的可执行文件名称/路径,并尝试从文件中读取PEheader。有没有人有可以实现这一目标的代码片段? 最佳答案 有一个WinAPI函数,IsWow64Process. 关于c++-如何查找

windows - 获取 Windows 架构(32/64 位版本)

我遇到了一个小问题:我想了解操作系统的架构,问题是我的编程语言不支持此类功能。因此,我需要从Windowsdll(如kernel32.dll)中读取此信息我确实尝试使用函数GetNativeSystemInfo/GetVersionEx/GetSystemInfo获取信息。不幸的是我无法获得架构:/在任何windowsdll中是否有一些其他的函数来读取架构?(它不需要是kernel32它可以是任何dll但它必须存在于winxp+中)作为信息:我正在使用Gupta(SQLWindows/Teamdevoloper)编辑1:typedefstruct_SYSTEM_INFO{union{D

c++ - 移至 64 位操作系统时共享内存性能降低

我遇到了在64位Windows上运行的32位旧版应用程序的问题。有问题的应用程序使用CreateFileMapping创建共享内存。当它在64位Windows上运行时,任何从另一个进程访问此共享内存的尝试都需要大约1秒。共享内存是使用页面保护标志创建的:flProtect=PAGE_READONLY|SEC_NOCACHE|SEC_COMMIT;当使用以下方法创建相同的内存时:flProtect=PAGE_READONLY|SEC_COMMIT;问题消失了。目前这种解决方法是可以接受的,但我们确实有一些设备需要设置SEC_NOCACHE标志。谁能告诉我为什么在这种情况下SEC_NOCA

windows - 64 位操作系统 (windows) 上的 32 位应用程序

我需要一些帮助来了解32位应用程序如何在64位操作系统上使用内存。一个32位应用程序可以在64位操作系统上使用2GB内存,对吗?这是否意味着并行运行的3个32位应用程序可以寻址6GB的内存...还是3个32位应用程序必须共享操作系统拥有的2-4gb的32位内存?同样,如果我有一个编译为32位的Web服务,在64位机器上的IIS下运行。只要对该web服务的单个请求始终保持在2gb内存使用量以下,重新编译到64位是否有任何意义?我的理论是,IIS为每个请求创建一个新进程,因此整个进程池将能够利用64位机器拥有的所有内存,8或15或20gig或其他。告诉我你的想法,谢谢

windows - ntdll_77bc0000 或 ntdll_772d0000 在 Wow64 调用堆栈中意味着什么

我有WOW64崩溃转储,其中包含调用堆栈信息,例如:0018fb0077c06a8b0018fbc80018ffc40018fc18ntdll_77bc0000!ExecuteHandler2+0x26或喜欢:0018fb0077c06a8b0018fbc80018ffc40018fc18ntdll_772d0000!ExecuteHandler2+0x26ntdll_772d0000好像是一个dll的名字,但是我在C:\Windows\SysWOW64中没有看到,我也很好奇为什么在同一台机器上会有不同的名字,比如ntdll_77bc0000和ntdll_772d0000。谢谢。

c# - 64 位操作系统与 32 位应用程序

我创建了一个在32位操作系统上运行良好的应用程序,但我尝试过的每个64位操作系统似乎都无法正常工作。我正在创建一个允许您更改Windows7登录屏幕背景图像的应用程序。为此,我的应用程序需要在System32目录中创建一个文件夹,而在64位操作系统上似乎没有想要创建它。我没有收到错误,也没有抛出异常。它似乎没有创建文件夹。64位操作系统有一个不同的System32文件夹“Windows\SysWOW64\”,所以我应该改写它吗?我对64位操作系统在做什么感到有点困惑,如果有人能解决这个问题并为我指明正确的方向,那就太好了。提前致谢!制作目录的代码:path=DriveLabel+=@"

windows - x64下的线程信息 block

我需要从x64平台上的TIB获取最大和最小堆栈(我知道我需要用GS寄存器替换FS寄存器。)在x86平台上我可以使用thistable并找到正确的偏移量你知道我在哪里可以找到x64平台的表格吗? 最佳答案 这是一个适用于x86和x64的程序。#include#includevoidmain(){PNT_TIBptib=(PNT_TIB)NtCurrentTeb();#ifdef_AMD64_printf("Stackbase:%08I64X,limit:%08I64X\n",ptib->StackBase,ptib->StackLim

.net - MySQL Workbench 5.2.42 在 Win7 x64 上启动时崩溃

我有一个win7x64系统(i3、nvidia卡),我想使用MySQLWorkbench,但在启动后它崩溃并显示以下消息:Problemsignature:ProblemEventName:APPCRASHApplicationName:MySQLWorkbench.exeApplicationVersion:5.2.42.9752ApplicationTimestamp:50243f32FaultModuleName:wbprivate.be.dllFaultModuleVersion:0.0.0.0FaultModuleTimestamp:50243a9eExceptionCode

c - 如何创建包含 32 位和 64 位二进制文​​件并在操作系统上运行它们的应用程序?

我做了一个应用程序,我必须编译它的32位和64位版本。我看到一些应用程序,例如ProcessExplorer,其作用如下。在32位操作系统上,它运行一个32位应用程序,但在64位操作系统上,它提取同一exe的64位版本,这将被执行。那么我怎样才能从我的应用程序中制作这样的应用程序呢?我应该在VisualStudio中进行哪些设置? 最佳答案 Processexplorer的工作方式如下:您下载一个32位可执行文件。当您在32位操作系统上运行该可执行文件时,就是这样。当您在64位操作系统上运行该可执行文件时,32位进程会在启动时检测到