Binary 如何使用Windows SDK中的sn.exe对二进制文件进行签名,作为生成后步骤的一部分?

Binary 如何使用Windows SDK中的sn.exe对二进制文件进行签名,作为生成后步骤的一部分?,binary,activex,sign,post-build,sn.exe,Binary,Activex,Sign,Post Build,Sn.exe,我对这个C#Visual Studio编程环境完全不熟悉,但我必须完成一项任务。 如果我的问题看起来很傻,我很抱歉。但我真的不明白这个网站上的其他帖子或网上的其他网站在解释什么。我需要一个循序渐进的指南来完成我的任务的最后一步 我收到了一个使用VisualStudio2008编写的名为MCC的应用程序。但是,由于DEP问题,此应用程序无法在Windows Vista中正常运行。MCC具有显示来自IP摄像头的视频的功能。这需要AxGif89aLite的ActiveX控件。但是,Vista中的DEP

我对这个C#Visual Studio编程环境完全不熟悉,但我必须完成一项任务。 如果我的问题看起来很傻,我很抱歉。但我真的不明白这个网站上的其他帖子或网上的其他网站在解释什么。我需要一个循序渐进的指南来完成我的任务的最后一步

我收到了一个使用VisualStudio2008编写的名为MCC的应用程序。但是,由于DEP问题,此应用程序无法在Windows Vista中正常运行。MCC具有显示来自IP摄像头的视频的功能。这需要AxGif89aLite的ActiveX控件。但是,Vista中的DEP在默认情况下处于启用状态。PE标头中的标志IMAGE\u DLLCHARACTERISTICS\u NX\u COMPAT不允许使用此控件。已经运行了几个测试,并确定这就是问题所在

从网上的一篇文章中, ,他们建议我需要在MCC后期构建事件中添加以下内容

调用$(DevEnvDir)\工具\vsvars32.bat
editbin.exe/NXCOMPAT:NO$(C:\Program Files\Aerocut\MCC\MCC2.exe)

因此,我添加了它并重建了MCC解决方案文件。那么,我就无法理解这最后一步需要我做什么

请注意,如果在Visual Studio中对二进制文件进行签名,则在对二进制文件进行签名后,在生成后步骤中翻转IMAGE\u DLLCHARACTERISTICS\u NX\u COMPAT标志将导致程序集无法通过强名称验证。要解决此问题,请将二进制文件作为构建后步骤的一部分进行签名。 要执行此操作,请使用Windows SDK中的SN.EXE。

我真的很困惑这个签名二进制是什么

  • 根据我在谷歌上搜索到的信息,签署一个应用程序就是为该程序获得一个证书,这样它就更安全了,我在这里吗
  • 我的电脑里有SN.EXE。但是,如何将二进制文件作为构建后步骤进行签名?二进制文件应该是我编译的执行文件,对吗 我用重建的安装文件重新安装了MCC。它仍然给我以下错误:

    无法获取“AxGif89aLite”控件的窗口处理程序。不支持无窗口ActiveX控件


    非常感谢您的帮助。首先,我想在此表示感谢。

    如果编译过程中尚未对可执行文件进行签名,则无需担心。

    好的。谢谢安德鲁。但是,为什么即使我在后期构建事件中添加了NXCOMPAT:NO,我仍然会收到错误?我做错了吗?我没有玩NX旗子的经验。我不确定出了什么问题。我确实注意到,您传递给editbin的EXE的路径在您的问题和随后的评论中是不同的。您确定正在使用您编辑的二进制文件吗?例如,您是否对调试二进制文件运行editbin,但使用的是发布版本中的二进制文件?即使将这两行代码放在生成后事件中,我也无法消除错误。我想我可能做错了。感谢您能帮我指出我哪里做错了。1.在解决方案资源管理器中打开MCC2,在“构建事件”选项卡下,输入以下内容:call$(DevEnvDir)…\tools\vsvars32.bat editbin.exe/NXCOMPAT:NO$(C:\Users\Aerocut\Desktop\MCC\MCC2\obj\Debug\MCC2.exe)2。保存和重建解决方案以及重建MCC2。为了解决这个问题,因为我真的要开始工作了,我只是在Vista中禁用了整个DEP。稍后,当项目完成时,仅将DEP更改回启用。我已经花了一个星期来解决这个问题,我的工作都无法继续。