您不能在64-位可执行文件上设置DEP属性。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您不能在64-位可执行文件上设置DEP属性。相关的知识,希望对你有一定的参考价值。
我是吧CAD设置数据执行保护,显示的。在网上找了好久都说选择‘C:WindowsSysWOW64dllhost.exe,’可是我不会弄该怎样选择,我的软件是安装在D盘的Program Files (x86)下。求指点!!!!!
选择C:WindowsSysWOW64dllhost.exe这样就可以了。
怎样选择C:WindowsSysWOW64dllhost.exe?
参考技术A 回答您好,1、启用 DEP右键,单击我的电脑,选择属性,然后点击高级选项卡,然后选择设置。2、在Windows 8或Windows 10,你右击该电脑,选择属性,然后点击高级系统设置链接。3、现在点击数据执行保护选项卡,在新的界面你会看见两个单选按钮。4、默认情况下,DEP应设置为第一个单选按钮,因此只保护基本的Windows程序和服务。如果第二个单选按钮被选中,它将启用所有的过程,而不只是Windows进程。如果你有问题的程序,去尝试选择第一个单选按钮,重启你的电脑,看看是否解决问题。如果没有,你可以去 吧,点击 启用程序之外的所有程序和服务那些我选择 按钮,然后添加程序问题。5、它还值得注意的是,你可能会得到一个错误信息不能设置DEP属性对64位可执行文件,当添加一个64位的可执行的例外列表。这是好的因为它意味着你的计算机是64位,你的处理器已经支持基于硬件的DEP。7、把DEP设置成关闭,除了两个设置中的数据执行保护”选项卡上面看到你,还有更多的设置,您可以配置部打开命令提示符,点击开始,输入cmd, 右键单击第一项,选择以管理员身份运行。这样你的电脑就可以执行了。
有任何工具可用于将 32 位/64 位可执行文件打包在一起吗? [关闭]
【中文标题】有任何工具可用于将 32 位/64 位可执行文件打包在一起吗? [关闭]【英文标题】:Any tools available for packing 32bit/64bit executables together? [closed] 【发布时间】:2010-11-13 07:51:27 【问题描述】:我非常喜欢 SysInternals 实用程序(例如 Process Explorer)处理 64 位兼容性的方式。看起来 32 位可执行文件中嵌入了 64 位版本,并在必要时将其提取出来。
我想要一个可以自动执行此操作的工具 - 即获取 32 位和 64 位可执行文件,以某种方式将它们打包在一起,然后插入存根代码以根据其运行的平台启动正确的可执行文件。
在我开始自己动手之前,有没有人知道这样的东西已经存在?
【问题讨论】:
没有人能够确定可以执行此操作的打包工具,因此我接受了我认为最有用的答案。 【参考方案1】:这似乎已经在...中介绍过(虽然细节很浅)
Roll 64-bit and 32-bit versions of an app into the same binary?
【讨论】:
麻烦 - 我搜索时没有找到该帖子。尽管如此,它并没有真正回答我的问题 - 修改了我的标题以使其更清晰。【参考方案2】:不是一种工具,但将可执行文件作为资源嵌入到 VC++ 项目中并在检查操作系统环境后运行正确的文件似乎相当容易。
使用 IsWow64Process 函数检测 32 位或 64 位,这里有一篇不错的文章,包括有关如何嵌入可执行文件的源代码:http://www.codeproject.com/KB/winsdk/binaryresources.aspx。
【讨论】:
【参考方案3】:虽然这是可能的,但我认为这是一种不好的做法,因为大多数应用程序(例如 Process Explorer)会在工作目录中提取该文件。如果您想将程序放在“Program Files”文件夹中,则与该目录为只读目录冲突。
对我来说,将两个程序分开并创建 x86 文件的快捷方式似乎更容易。如果该版本检测到 64 位,则只需启动 x64 文件。
如果您有充分的理由将这两者结合起来,那么将其作为资源嵌入似乎是一条正确的道路。
【讨论】:
【参考方案4】:SysInternals 的 Mark Russinovich 描述了他们的方法here。他们确实在 x86 图像中嵌入了 x64 图像。不幸的是,上面的博文实际上并没有详细介绍,而是提到他们的技术是基于here 发现的一篇更早的文章。
【讨论】:
【参考方案5】:Here is a guide 编译一个完成这项工作的 AutoIT 脚本,尽管您无法控制打包和存根启动器的工作方式。
如果链接消失,我将在此处重现 AutoIT 脚本:
; Check if we’re on 64-bit OS…
If EnvGet(“PROCESSOR_ARCHITEW6432″)=”” Then
; No we’re not – run x86 version…
FileInstall(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
FileDelete(@TempDir & “\ETrustCheck_x86.exe”)
Else
; Yes we are – run x64 version..
FileInstall(“D:\Support\ETrustCheck_x64.exe”,@TempDir & “\ETrustCheck_x64.exe”)
RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x64.exe”)
FileDelete(@TempDir & “\ETrustCheck_x64.exe”)
EndIf
; The END
AutoIT 脚本编辑器可以将此脚本打包到 32 位启动器中,并在其中打包两个可执行文件。
【讨论】:
以上是关于您不能在64-位可执行文件上设置DEP属性。的主要内容,如果未能解决你的问题,请参考以下文章
为啥 cx_Freeze 在 64 位 Debian Linux 上运行时使 32 位可执行?
有任何工具可用于将 32 位/64 位可执行文件打包在一起吗? [关闭]