草庐IT

syswow64

全部标签

c++ - SHGetKnownFolderItem - 在 Wow64 上失败

我想获取已安装的Windows更新列表。我编译32位可执行文件,并在64位机器(Windows10)上运行它我调用函数SHGetKnownFolderItem来获取FOLDERID_AppUpdates的已知文件夹,但是,我得到E_INVALIDARG在x64中它工作正常。我对以32位编译它有限制。我选择那个选项是因为它是最快的。代码:voidViewInstalledUpdates(){usingnamespacestd;HRESULThr=CoInitialize(NULL);intcount=0;if(SUCCEEDED(hr)){CComPtrpUpdates;CComPtrp

c++ - 为什么我需要从 `long &` 到 `int &` 的 reinterpret_cast,两者都是 32 位 (Windows LLP64)?

我在跨平台环境中使用Qt。我们遇到了以下问题:在Windows上,int和longint都是32位整数;在64位MacOS和Linux上,int是32位的,longint是64位的(参见https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models)。因此,跨平台库倾向于提供它们自己的固定位类型定义。在Windows上,Qt将quint32定义为unsignedint并且不使用unsignedlong整数。另一个库将其Uint32定义为unsignedlong。因此,两者实际上都是32位无符号整数,但具有不同的原始数据

c - 如何在运行时在 Windows 上的 64 位应用程序中设置程序集中的函数参数?

我正在尝试使用通用函数中使用的汇编代码设置参数。这个通用函数的参数——驻留在dll中——在编译时是未知的。在运行期间,使用GetProcAddress函数确定指向该函数的指针。然而,它的论据是未知的。在运行时,我可以使用数据文件(不是头文件或任何可以包含或编译的文件)确定参数-值和类型。我找到了一个很好的例子来说明如何为32位(CPassargumentsasvoid-pointer-listtoimportedfunctionfromLoadLibrary())解决这个问题,但是对于64位这个例子不起作用,因为你不能填充堆栈但你必须填充寄存器。所以我尝试使用汇编代码来填充寄存器,但直

c++ - 如何在 Win x64 上使用 WinAPI 正确安装虚拟打印机?

我正在尝试使用WinAPI调用从C++控制台程序安装虚拟打印机。它在WindowsXP上运行良好,但在Windows7x64上有一些进程将文件锁定在系统文件夹中,这是安装所必需的。我认为它们只出现在x64Windows系统上,但我没有在WindowsXPx64上测试过。这些是进程splwow64.exe和PrintIsolationHost.exe。我试图以编程方式杀死它们,结果很好(好吧,为了终止PrintIsolationHost.exe,我设置了一个调试权限,'因为它是系统进程)但我开始认为我的代码可能有问题,如果它没有以这种方式工作。显然必须有某种安装方式而不终止任何系统进程。

windows - 使用 RegNotifyChangeKeyValue 监视对 64 位 key 的更改

我正在尝试使用RegNotifyChangeKeyValue来监视64位注册表项的更改。要从32位应用程序打开此key,我们必须添加访问标志KEY_WOW64_64KEY。不幸的是,我似乎无法监控对此key的更改,只有它是32位对应项。我包括一个演示项目以及我用来实现注册表监控的单元。在这里下载:RegMonitor重现问题的步骤:编译程序。以管理员身份运行它。单击“开始”按钮。打开regedit并导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run在那里添加一个新值。RegMonitor不会检测到任何变

windows - 使用 Platform 属性构建 WiX x86/x64

我正在使用以下定义使我的设置脚本根据构建环境变得灵活。详细来说,我在意组件的每个Win64属性中使用的win64Flag变量。我也在包“平台”属性中使用平台。但是为了回到Win64属性,我以这种方式使用变量:Win64="$(var.win64Flag)"而且我总是收到一条警告,告诉我在YesNoType属性中使用此语句是无效的。我正在通过这个调用使用candle.exe构建这些东西:candle.exe-extWixUtilExtension-dPlatform=x86"Deployment\WiXSetupProject\SetupScript.wxs"-out"Deploymen

windows - 如何在 64 位 Windows 中运行旧的 x86 DOS 汇编程序?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion几年前,我编写了一些x86DOS汇编程序作为批处理文件编程的辅助工具。程序很小;.COM版本大约有两三百个字节。我现在正在更新和创建这些程序的新版本;但是,.COM或.EXE可执行文件不能在64位Windows版本中运行。我需要知道最简单的方法来转换此类程序,以便它们在64位Windows中运行。我知道DosBox可能会这样做,但我需要我的程序在Wincmd.exe批处理文件中运行。有人可以帮

c++ - 64 位进程上的 ReadProcessMemory 总是返回错误 299

我在使用ReadProcessMemory时遇到了一些问题我的代码是64位的我可以读取任何32位进程的内存,但ReadProcessMemory总是失败,错误代码299(部分读取)返回0字节读取。完成我的研究,大多数答案都与权限有关,但我启用了调试token并以管理员身份运行,我在PE可选header中读取ImageBase的地址我尝试使用VirtualQueryEx检查页面状态,但访问被拒绝!注意:代码可以在任何32位进程上完美运行。任何可能导致此问题的想法?HANDLEhProcess;DWORDpid;EnableDebugPriv();pid=GetProcessByName(

php - 无法在windows 7 x64 机器上的wamp2.2 上安装apc,wamp 也是x64。请帮助

我一直在尝试在Windows7x64上的wamp2.2上安装apc,但没有成功。我下载了没有memprotect的php_apc并且能够在wamp上的任务切换器中选择它,我还添加了扩展名和以下内容:[APC]apc.enabled=1apc.shm_segments=1apc.shm_size=64Mapc.max_file_size=10Mapc.stat=1到php.ini,下一步,从http://svn.php.net下载apc.php,但是无论我做什么,我的phpinfo()文件都不显示apc,并且apc.php说它没有运行。我读过有关在vc6上构建wamp的信息,但在pier

javascript - 在发送到 BASE64 之前调整图像大小(不使用 img 元素)

编辑:我不想在客户端显示图像,目的是缩小图像和比例...在必须将图像上传到服务器之前,我在调整使用表单中输入的文件选择的图像时遇到了一些问题。我有以下代码监控我的文件输入://monitorfileinputsandtriggerevent$(document).on('change','.btn-file:file',function(){varF=this.files;if(!isImage(F[0])){alert("Notanimagefile");}varfileurl=resizeImage(F[0]);console.log(fileurl);varinput=$(thi