草庐IT

vscode1.86

全部标签

windows - x86 程序中的控制台

.386.modelflat,stdcalloptioncasemap:noneincludewindows.incincludekernel32.incincludeuser32.incincludelibuser32.libincludelibkernel32.libMainproto.datahOutputdd0bReadWrittendd0szText1db"What'syourname?",0hInputdd0szInputdb128dup(0).data?.codestart:InvokeMainInvokeExitProcess,0MainprocinvokeGetStd

windows - 符号如何解决在 x86 调试中使用 FPO 遍历堆栈?

在这个答案中:https://stackoverflow.com/a/8646611/192359,解释了在调试x86代码时,即使使用了FPO(帧指针省略),符号也允许调试器显示调用堆栈。给出的解释是:Onthex86PDBscontainFPOinformation,whichallowsthedebuggertoreliablyunwindacallstack.我的问题是这些信息是什么?据我了解,仅知道函数是否具有FPO并不能帮助您找到堆栈指针的原始值,因为这取决于运行时信息。我在这里错过了什么? 最佳答案 从根本上说,总是可以

windows - 如何使用 Perl 或任何其他语言在 Windows x86-32bit 上找到确切的物理内存量?

我需要知道一台Windows机器有多少物理内存,使用Perl。我试过使用Win32::SystemInfo.但是,此模块声明了以下警告:OnIntelx86computerswithmorethan2GBandlessthan4GBofmemory,theMemoryStatusfunctionwillalwaysreturn2GBforTotalPhys.Similarly,ifthetotalavailablememoryisbetween2and4GB,AvailPhyswillberoundeddownto2GB.所以在一台有2-4GB物理内存的机器上,我得到一个错误的答案。有

windows - x86 程序参数位置

我正在编写一个Windows应用程序,它在汇编中打印命令行参数。我有所有的处理代码。我需要知道的是程序参数在堆栈中的位置 最佳答案 命令行参数并没有真正在堆栈上传递。获取命令行指针的官方方法是调用KERNEL32函数GetCommandLine。 关于windows-x86程序参数位置,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10401423/

windows - Cygwin-x64 上的 "CPU you selected does not support x86-64 instruction set"错误

我正尝试按照以下说明在cygwin中安装openssl:我从这个网站下载了最新的tarballhttp://www.openssl.org/source/,并将其放入C:\cygwin64\home,然后我从cygwin运行这些命令tarzxvfopenssl-1.0.1e.tar.gzcdopenssl-1.0.1e./配置制作做测试安装(此处的说明:http://www.slideshare.net/ganaaturuu/cygwinandopen-sslinstallguide)直到第3步./config我相信它工作正常,至少没有报告错误,并且它给出消息“已为Cygwin配置”。

c++ - 在 x86 和 x64 体系结构中获取 Windows 序列号 (MachineGuid)

我目前正在使用以下C++代码从Windows注册表中获取MachineGuid,并将该信息用于我的许可算法:std::wstringkey=L"SOFTWARE\\Microsoft\\Cryptography";std::wstringname=L"MachineGuid";HKEYhKey;if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,key.c_str(),0,KEY_READ,&hKey)!=ERROR_SUCCESS)throwstd::runtime_error("Couldnotopenregistrykey");DWORDtype;DWORDcb

windows - 批处理在 C :\Program Files (x86) 中找不到 .exe 文件

这是我正在使用的代码:cd"D:\HigherFolder\FolderX"startexecutable1.execd"C:\ProgramFiles(x86)\FolderY\"startexecutable2.execd"C:\ProgramFiles(x86)\FolderZ\bin\"startexecutable3.exeexit我想一个接一个或同时启动一个.exe,但这不适用于可执行文件2和3;命令提示符说它找不到文件,我需要证明他们的名字是正确的(我做了很多次)。 最佳答案 在命令#2上将其更改为cd/d。(为了安全

windows - 将 64b 应用程序放入 ProgramFiles(x86) 是个坏主意吗?

我们正在发布应用程序,即32b,因此将其放入ProgramFiles(x86)目录。它有一个x64“插件”,作为一个单独的进程(服务)运行,现在我们将它部署到主应用程序的子目录中。该插件未部署在x86系统上。现在,问题是——这(在x86ProgramFiles中可以执行x64)不是一个坏主意吗?此解决方案是否会对(某事)产生负面影响?谢谢! 最佳答案 它没有负面影响,事实上,VisualStudio也会这样做(它将其64位native编译器安装到(x86)目录中)。只有当它是一个“真正的”64位应用程序时才会出现问题,该应用程序期望

c++ - 假设任何 x86 编译的应用程序总是在 x64 版本下运行是否安全?

是否可以安全地假设任何x86编译的应用总是在编译该应用的同一操作系统的x64版本下运行?/p>据我所知,对于Windows操作系统,答案是"is"。Windowsx86仿真层也是出于同样的目的而构建的。但是,我只想再次确认这里的专家。Unix、Linux呢?有什么注意事项吗? 最佳答案 不,要运行x86代码,它需要在兼容或传统模式下运行。如果操作系统不支持在兼容模式下运行进程,程序很可能无法运行。Linux和IFAIKWindows目前支持兼容模式,看起来还有更多或多或少的支持。我的理解是NETBSD需要一个特殊的模块来支持它,因此

c++ - x64 位 Windows 上的 ExpandEnvironmentStrings( ... ) 正在将 %programfiles% 扩展到 x86 路径

我有一个x86应用程序在x64版本的Windows10上运行。在我的应用中,我使用ExpandEnvironmentStrings(...)来扩展用户给定的值。但当变量为%programfiles%时,它会扩展为C:\ProgramFiles(x86)我是否需要做一些特殊的事情来让x86应用程序正确扩展程序文件变量?注意:当我在资源管理器中直接使用%programfiles%时,它会正确扩展到C:\ProgramFiles。我正在使用VisualStudio2015进行开发。 最佳答案 当32位应用程序扩展环境变量引用%Progra